|
@@ -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,
|