diff --git a/src/components/customField/AddForm.vue b/src/components/customField/AddForm.vue index 36c0a9ff..8d421299 100644 --- a/src/components/customField/AddForm.vue +++ b/src/components/customField/AddForm.vue @@ -60,6 +60,7 @@ @@ -292,7 +293,8 @@ export default { optionsData: {}, // 用接口获取到的下拉数据 excludeStandardNumbers: '', // 不包含的标准号 standardGradeClassification: [], // 企标级别映射 - innerDisabledField: [] // 内部不可编辑字段 + innerDisabledField: [], // 内部不可编辑字段 + departSelectRange: [] // 选择部门的选择范围,传了就只能从这些里面选,不传就都能选 } }, watch: { @@ -312,6 +314,7 @@ export default { } else if (val === StandardGradeClassify.ONE_LEVEL.value) { // 选的是1级 this.formInline.auth_dept = this.standardGradeClassification.find(item => item.level + '' === '1').deptIds + this.departSelectRange = this.standardGradeClassification.find(item => item.level + '' === '1').deptIds.split(',') this.formInline = JSON.parse(JSON.stringify(this.formInline)) if (this.innerDisabledField.includes('auth_dept')) { this.innerDisabledField = this.innerDisabledField.filter(item => item !== 'auth_dept') @@ -319,6 +322,7 @@ export default { } else if (val === StandardGradeClassify.TWO_LEVEL.value) { // 选的是2级 this.formInline.auth_dept = this.standardGradeClassification.find(item => item.level + '' === '2').deptIds + this.departSelectRange = this.standardGradeClassification.find(item => item.level + '' === '2').deptIds.split(',') this.formInline = JSON.parse(JSON.stringify(this.formInline)) if (this.innerDisabledField.includes('auth_dept')) { this.innerDisabledField = this.innerDisabledField.filter(item => item !== 'auth_dept') diff --git a/src/components/jerobiz/JSelectDepart.vue b/src/components/jerobiz/JSelectDepart.vue index 48c45b5e..cd8bb694 100644 --- a/src/components/jerobiz/JSelectDepart.vue +++ b/src/components/jerobiz/JSelectDepart.vue @@ -15,6 +15,7 @@ :store="storeField" :text="textField" :treeOpera="treeOpera" + :selectRange="selectRange" @ok="handleOK" @initComp="initComp"/> @@ -79,6 +80,14 @@ export default { type: Boolean, default: false, required: false + }, + // 选择部门的选择范围,传了就只能从这些里面选,不传就都能选 + selectRange: { + type: Array, + default: () => { + return [] + }, + required: false } }, @@ -112,6 +121,7 @@ export default { }, methods: { initComp (textVals) { + console.log(textVals) this.textVals = textVals }, // 返回选中的部门信息 diff --git a/src/components/jerobiz/modal/JSelectDepartModal.vue b/src/components/jerobiz/modal/JSelectDepartModal.vue index 7cd8a25b..e11543ed 100644 --- a/src/components/jerobiz/modal/JSelectDepartModal.vue +++ b/src/components/jerobiz/modal/JSelectDepartModal.vue @@ -57,7 +57,7 @@ import { queryDepartTreeList } from '@/api/api' export default { name: 'JSelectDepartModal', - props: ['modalWidth', 'multi', 'rootOpened', 'departId', 'store', 'text', 'treeOpera'], + props: ['modalWidth', 'multi', 'rootOpened', 'departId', 'store', 'text', 'treeOpera', 'selectRange'], data () { return { visible: false, @@ -84,6 +84,19 @@ export default { handler () { this.initDepartComponent(true) } + }, + // 选择部门的选择范围,传了就只能从这些里面选,不传就都能选 + selectRange: { + deep: true, + handler (val) { + if (val && val.length > 0) { + console.log(this.treeData) + console.log('--------filterTreeDataOnlySelectRange--------', val) + this.filterTreeDataOnlySelectRange(this.treeData) + console.log(this.treeData) + this.$forceUpdate() + } + } } }, computed: { @@ -114,6 +127,22 @@ export default { } }) }, + // 筛选出只有在选择范围里的数据 + filterTreeDataOnlySelectRange (arr) { + for (const item of arr) { + if (item.children && item.children.length > 0) { + this.filterTreeDataOnlySelectRange(item.children) + } else { + if (!this.selectRange.includes(item.key)) { + item.disabled = true + item.selectable = false + } else { + item.disabled = false + item.selectable = true + } + } + } + }, initDepartComponent (flag) { const arr = [] // 该方法两个地方用 1.visible改变事件重新设置选中项 2.组件编辑页面回显