瀏覽代碼

更新社保分部

lex-xin 3 年之前
父節點
當前提交
328d43c3c7
共有 2 個文件被更改,包括 75 次插入21 次删除
  1. 73 19
      src/views/categroyManager/insideSetting/staffManager.vue
  2. 2 2
      vue.config.js

+ 73 - 19
src/views/categroyManager/insideSetting/staffManager.vue

@@ -201,20 +201,6 @@
                        :value="item.value"></el-option>
           </select-all>
         </el-form-item>
-        <el-form-item label="社保分部"
-                      prop="deptId"
-                      :label-width="formLabelWidth">
-          <el-select filterable
-                     clearable
-                     placeholder="请选择社保分部"
-                     collapse-tags
-                     v-model.trim="form.deptId">
-            <el-option v-for="item in organList"
-                       :key="item.id"
-                       :label="item.name"
-                       :value="item.id"></el-option>
-          </el-select>
-        </el-form-item>
         <el-form-item label="所属分部"
                       prop="organIdLists"
                       :label-width="formLabelWidth">
@@ -242,9 +228,34 @@
                 :options="deptList"
                 :show-all-levels="false"
                 :collapse-tags="true"
+                @change="onDeptChange"
                 :props="{ multiple: true, checkStrictly: false }"
               ></el-cascader>
         </el-form-item>
+        <el-form-item label="社保分部"
+                      prop="deptId"
+                      :label-width="formLabelWidth">
+          <el-cascader
+                v-model="form.deptId"
+                placeholder="请选择社保分部"
+                clearable
+                style="width: 100%;"
+                :options="deptSmallList"
+                :show-all-levels="false"
+                :collapse-tags="true"
+                :props="{ checkStrictly: false }"
+              ></el-cascader>
+          <!-- <el-select filterable
+                     clearable
+                     placeholder="请选择社保分部"
+                     collapse-tags
+                     v-model.trim="form.deptId">
+            <el-option v-for="item in organList"
+                       :key="item.id"
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select> -->
+        </el-form-item>
         <div v-for="(postDeptIds, index) in form.postDeptIds" :key="index">
           <el-form-item
                 :label="'岗位管理' + (index + 1)"
@@ -395,6 +406,7 @@ import pagination from '@/components/Pagination/index'
 import { permission } from "@/utils/directivePage";
 import { queryEmployByOrganId, employeeOperate, getUserRole, employeeAdd, employeeUpdate, hasCourseGroupRelation, updateEducationTeacherId, queryEmployeeOrganByUser, getDepts, getPosts } from '@/api/systemManage'
 import { findEducationTeacher } from '@/api/specialSetting'
+import deepClone from '@/helpers/deep-clone'
 import { findEducationUsers } from '@/api/buildTeam'
 // import Treeselect from '@riophae/vue-treeselect'
 // import '@riophae/vue-treeselect/dist/vue-treeselect.css'
@@ -419,6 +431,7 @@ export default {
       tableList: [],
       educationList: [],
       deptList: [],
+      deptSmallList: [],
       postList: [],
       educationForm: {
         targetUserId: ''
@@ -501,7 +514,7 @@ export default {
     onRoleSubmit (formName) {
       this.$refs[formName].validate((valid) => {
         if (valid) {
-          const { organIdLists, postDeptIds, deptIds, ...res } = this.form
+          const { organIdLists, postDeptIds, deptIds, deptId, ...res } = this.form
           let tempPost = []
           postDeptIds.forEach(post => {
             let tempIds = []
@@ -518,10 +531,13 @@ export default {
             tempDeptIds.push(ds[ds.length - 1])
           })
 
+          const tempDeptId = deptId[deptId.length - 1]
+
           let tempForm = {
             postDeptIds: JSON.stringify(tempPost),
             organIdList: organIdLists.join(','),
             deptIds: tempDeptIds,
+            deptId: tempDeptId,
             ...res
           }
           if (this.formActionTitle == 'create') {
@@ -580,10 +596,10 @@ export default {
       let temp = []
       if (node.children && node.children.length > 0) {
         node.children.forEach(item => {
-          let child = this.normalizer(item)
+          let child = this.normalizer(item, status)
           let obj = {
             value: item.deptId,
-            label: item .deptName
+            label: item .deptName,
           }
           if(child && child.length > 0) {
             obj.children = child
@@ -601,7 +617,8 @@ export default {
           result.rows.forEach(item => {
             this.roleList.push({
               label: item.roleName,
-              value: item.id
+              value: item.id,
+              disabled: false,
             })
           })
         }
@@ -634,6 +651,42 @@ export default {
       })
       this.$store.dispatch('setBranchs')
     },
+    onDeptChange(value) {
+      this.form.deptId = null
+      this.deptSmallList = []
+      let selectList = value.flat(Infinity)
+      selectList = [...new Set(selectList)]
+      const depts = deepClone(this.deptList)
+      const formatArr = []
+      depts.forEach(dep => {
+        formatArr.push({
+          value: dep.value,
+          label: dep.label,
+          disabled: !selectList.includes(dep.value),
+          children: this.normalizer2(dep, selectList)
+        })
+      })
+      this.deptSmallList = formatArr
+    },
+    /** 转换菜单数据结构 */
+    normalizer2(node, selectList) {
+      let temp = []
+      if (node.children && node.children.length > 0) {
+        node.children.forEach(item => {
+          let child = this.normalizer2(item, selectList)
+          let obj = {
+            value: item.value,
+            label: item.label,
+            disabled: !selectList.includes(item.value)
+          }
+          if(child && child.length > 0) {
+            obj.children = child
+          }
+          temp.push(obj)
+        })
+      }
+      return temp
+    },
     async roleOperation (type, data) {
       // 获取分部
       await queryEmployeeOrganByUser().then(res => {
@@ -675,13 +728,14 @@ export default {
             tempDeptIds.push(this.formatParentId(ds, this.deptList))
           })
         }
+        this.onDeptChange(tempDeptIds)
         this.form = {
           id: data.id,
           realName: data.realName,
           gender: data.gender,
           phone: Number(data.phone),
           roleIds: data.roleIds,
-          deptId: data.deptId ? data.deptId : null,
+          deptId: data.deptId ? this.formatParentId(data.deptId, this.deptList) : null,
           organIdLists: data.organIdList ? data.organIdList : [],
           jobNature: data.jobNature,
           entryDate: data.entryDate,

+ 2 - 2
vue.config.js

@@ -19,8 +19,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.148:8000' //邹璇
 // let target = 'http://192.168.3.112:8000' //勇哥
-// let target = 'http://dev.dayaedu.com' // 开发环境
-let target = 'https://test.dayaedu.com' //测试环境
+let target = 'http://dev.dayaedu.com' // 开发环境
+// let target = 'https://test.dayaedu.com' //测试环境
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {