agilebuilder-ui 1.1.36 → 1.1.37-sit2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{401-b8934d65.js → 401-c46a3b20.js} +1 -1
- package/lib/{404-743a4631.js → 404-c35a937a.js} +1 -1
- package/lib/{iframe-page-5e102433.js → iframe-page-10e94ddd.js} +1 -1
- package/lib/{index-a0c08bb5.js → index-f92e8ddb.js} +8140 -8005
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +1 -1
- package/lib/super-ui.umd.cjs +97 -97
- package/lib/{tab-content-iframe-index-e9b465bf.js → tab-content-iframe-index-8113610a.js} +1 -1
- package/lib/{tab-content-index-313404d0.js → tab-content-index-3b7f4fa8.js} +1 -1
- package/lib/{tache-subprocess-history-7d87cd77.js → tache-subprocess-history-75f40d2a.js} +1 -1
- package/package.json +1 -1
- package/packages/department-tree/src/department-tree.vue +130 -123
- package/packages/department-tree-inline/src/department-multi-tree-inline.vue +435 -466
- package/packages/department-tree-inline/src/department-single-tree-inline.vue +335 -342
- package/packages/department-tree-inline/src/department-tree-inline.vue +18 -11
- package/packages/department-tree-inline/src/department-tree-service.js +10 -11
- package/packages/department-tree-mobile/src/department-tree-app.vue +103 -75
- package/packages/department-tree-mobile/src/department-tree-inline-app.vue +256 -225
- package/packages/department-tree-mobile/src/department-tree-service.ts +98 -75
- package/packages/department-user-tree/src/department-user-multiple-tree.vue +112 -115
- package/packages/department-user-tree/src/department-user-single-tree.vue +85 -88
- package/packages/department-user-tree/src/department-user-tree.vue +127 -119
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +6 -1
- package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +5 -0
- package/packages/department-user-tree-inline/src/department-user-tree-inline.vue +18 -11
- package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +26 -51
- package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +25 -45
- package/packages/department-user-tree-inline/src/group-user/group-list.vue +97 -90
- package/packages/department-user-tree-inline/src/group-user/group-user.vue +28 -32
- package/packages/department-user-tree-mobile/src/department-user-tree-app.vue +103 -75
- package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +282 -224
- package/packages/department-user-tree-mobile/src/department-user-tree-service.ts +58 -51
- package/packages/fs-preview/src/fs-preview.vue +20 -2
- package/packages/fs-upload-list/src/fs-upload-list.vue +30 -7
- package/packages/fs-upload-new/src/file-upload-mobile/file-upload-browser.vue +1 -1
- package/packages/fs-upload-new/src/fs-preview-new.vue +27 -15
- package/packages/organization-input/src/organization-input.vue +34 -12
- package/packages/super-grid/src/apis.js +25 -4
- package/packages/super-grid/src/components/grid-radio-input.vue +104 -0
- package/packages/super-grid/src/dynamic-input.vue +94 -16
- package/packages/super-grid/src/formValidatorUtil.js +7 -2
- package/packages/super-grid/src/normal-column-content.vue +2 -1
- package/packages/super-grid/src/row-operation.vue +23 -13
- package/packages/super-grid/src/search-form-item.vue +444 -460
- package/packages/super-grid/src/super-grid.vue +73 -45
- package/packages/super-grid/src/utils.js +28 -9
- package/packages/super-icon/src/index.vue +4 -1
- package/packages/utils/value-set.js +25 -33
- package/packages/workgroup-tree/src/workgroup-tree.vue +117 -110
- package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +6 -1
- package/packages/workgroup-tree-mobile/src/workgroup-tree-app.vue +103 -75
- package/packages/workgroup-tree-mobile/src/workgroup-tree-inline-app.vue +229 -208
- package/src/api/sso-service.js +6 -5
- package/src/store/modules/table.js +0 -1
- package/src/styles/theme/dark-blue/sidebar.scss +9 -0
- package/src/styles/theme/gray/sidebar.scss +9 -8
- package/src/styles/theme/green/sidebar.scss +10 -0
- package/src/styles/theme/ocean-blue/sidebar.scss +9 -0
- package/src/styles/theme/tiffany-blue-mobile/sidebar.scss +9 -0
- package/src/utils/common-util.js +2 -1
- package/src/utils/insert_css.js +1 -1
- package/src/utils/util.js +19 -0
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +2 -2
- package/src/views/dsc-component/Sidebar/index.vue +36 -18
- package/src/views/layout/components/Menubar/Item.vue +0 -9
- package/src/views/layout/components/Menubar/SidebarItem.vue +2 -2
- package/src/views/layout/components/Sidebar/Item.vue +4 -1
- package/src/views/layout/components/Sidebar/SidebarItem.vue +2 -2
|
@@ -2,112 +2,140 @@
|
|
|
2
2
|
<div>
|
|
3
3
|
<el-card class="card-content" style="height: 50px">
|
|
4
4
|
<el-row class="item-row item-row-all">
|
|
5
|
-
<el-col style="width: 100
|
|
5
|
+
<el-col style="width: 100%">
|
|
6
6
|
<div style="display: flex">
|
|
7
|
-
<div style="flex: 0 0 20%;text-align:left">
|
|
8
|
-
<el-checkbox
|
|
7
|
+
<div style="flex: 0 0 20%; text-align: left">
|
|
8
|
+
<el-checkbox
|
|
9
|
+
v-if="multiple"
|
|
10
|
+
v-model="checkAll"
|
|
11
|
+
:label="$t('departmentTreeInline.allCheck')"
|
|
12
|
+
value="all"
|
|
13
|
+
@change="changeAllCheck"
|
|
14
|
+
/>
|
|
9
15
|
</div>
|
|
10
|
-
<div style="flex: 0 0 80%;text-align:right">
|
|
11
|
-
<el-input
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
<div style="flex: 0 0 80%; text-align: right">
|
|
17
|
+
<el-input
|
|
18
|
+
v-model="searchParam.searchValue"
|
|
19
|
+
:placeholder="$t('departmentTreeInline.pleaseInputNameOrCode')"
|
|
20
|
+
@clear="filterAppendNodes"
|
|
21
|
+
@keyup.enter="filterAppendNodes"
|
|
22
|
+
@blur="filterAppendNodes"
|
|
23
|
+
clearable
|
|
24
|
+
>
|
|
25
|
+
<template v-slot:suffix>
|
|
26
|
+
<el-icon @click="filterAppendNodes"><Search /></el-icon>
|
|
14
27
|
</template>
|
|
15
28
|
</el-input>
|
|
16
29
|
</div>
|
|
17
30
|
</div>
|
|
18
|
-
|
|
31
|
+
</el-col>
|
|
19
32
|
</el-row>
|
|
20
33
|
</el-card>
|
|
21
|
-
<el-card
|
|
34
|
+
<el-card v-if="tenantName" class="card-content">
|
|
22
35
|
<el-row class="item-row item-row-all">
|
|
23
|
-
<el-col class="item-label dept-path"
|
|
36
|
+
<el-col class="item-label dept-path"
|
|
37
|
+
><deptPath :tenantName="tenantName" :clickDepts="clickDepts" @clickBreadcrumb="clickBreadcrumb"
|
|
38
|
+
/></el-col>
|
|
24
39
|
</el-row>
|
|
25
40
|
</el-card>
|
|
26
|
-
<el-card class="card-content org-tree" style="overflow: auto
|
|
41
|
+
<el-card class="card-content org-tree" style="overflow: auto">
|
|
27
42
|
<el-tree
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
43
|
+
ref="orgTreeRef"
|
|
44
|
+
:data="departments"
|
|
45
|
+
:show-checkbox="multiple"
|
|
46
|
+
node-key="nodeId"
|
|
47
|
+
check-on-click-node
|
|
48
|
+
:default-checked-keys="defaultCheckedKeys"
|
|
49
|
+
@check-change="handleCheckNode"
|
|
50
|
+
@node-click="handleClickNode"
|
|
51
|
+
>
|
|
52
|
+
<template #default="{ node, data }">
|
|
53
|
+
<div class="item-row">
|
|
54
|
+
<div class="item-label">{{ data.showName }}</div>
|
|
55
|
+
<div v-if="!data.leaf" class="item-side" @click="loadChildren(data, false)">
|
|
56
|
+
<el-icon><ArrowRight /></el-icon>
|
|
57
|
+
</div>
|
|
42
58
|
</div>
|
|
43
|
-
</
|
|
44
|
-
</
|
|
45
|
-
</el-tree>
|
|
59
|
+
</template>
|
|
60
|
+
</el-tree>
|
|
46
61
|
</el-card>
|
|
47
|
-
<el-card
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
62
|
+
<el-card class="card-footer">
|
|
63
|
+
<div style="display: flex">
|
|
64
|
+
<div class="select-result" @click="showResult">
|
|
65
|
+
<!-- 已选择:6人,其中有一个部门(含子部门) -->
|
|
66
|
+
<span v-if="multiple" @click="showResult">
|
|
67
|
+
<span v-if="selectDepts.length > 0">
|
|
68
|
+
{{ $t('departmentTreeInline.selectResultInfoHasSelect')
|
|
69
|
+
}}{{ $t('departmentTreeInline.selectResultInfo', { num: selectDepts.length }) }}
|
|
70
|
+
<span style="padding-left: 10px"
|
|
71
|
+
><el-icon><ArrowUpBold /></el-icon
|
|
72
|
+
></span>
|
|
73
|
+
</span>
|
|
55
74
|
</span>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
75
|
+
<span v-else-if="selectDepts.length > 0">
|
|
76
|
+
{{ $t('departmentTreeInline.selectResultInfoHasSelect') }}{{ selectDepts[0].showName
|
|
77
|
+
}}<span v-if="selectDepts[0].parentNodeId !== '-1' && getDeptNamePath(selectDepts[0])" style="color: #999"
|
|
78
|
+
>({{ getDeptNamePath(selectDepts[0]) }})</span
|
|
79
|
+
>
|
|
80
|
+
</span>
|
|
81
|
+
</div>
|
|
82
|
+
<div class="button-area">
|
|
83
|
+
<el-button size="large" type="primary" @click="saveDept">{{ $t('imatrixUIPublicModel.sure') }}</el-button>
|
|
84
|
+
</div>
|
|
63
85
|
</div>
|
|
64
|
-
</div>
|
|
65
86
|
</el-card>
|
|
66
|
-
<deptResult ref="deptResultRef" :selectDepts="selectDepts" @removeDept="removeResultDept"/>
|
|
87
|
+
<deptResult ref="deptResultRef" :selectDepts="selectDepts" @removeDept="removeResultDept" />
|
|
67
88
|
</div>
|
|
68
89
|
</template>
|
|
69
90
|
|
|
70
|
-
<script
|
|
71
|
-
import { reactive,ref,onMounted, defineEmits,Ref } from 'vue'
|
|
91
|
+
<script setup lang="ts">
|
|
92
|
+
import { reactive, ref, onMounted, defineEmits, Ref } from 'vue'
|
|
93
|
+
import { ArrowRight, Search, ArrowUpBold } from '@element-plus/icons-vue'
|
|
72
94
|
import {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
95
|
+
getTenant,
|
|
96
|
+
getTenantChildren,
|
|
97
|
+
checkedDeptDefault,
|
|
98
|
+
loadDepartment,
|
|
99
|
+
initSelectDepts
|
|
100
|
+
} from './department-tree-service.ts'
|
|
101
|
+
import { resizeScrollTargetHeightUtil, getDeptNamePath } from '../../utils/organization.ts'
|
|
79
102
|
import deptPath from './dept-path.vue'
|
|
80
103
|
import deptResult from './dept-result.vue'
|
|
81
|
-
import {ElMessage} from 'element-plus'
|
|
82
|
-
import {useI18n} from
|
|
104
|
+
import { ElMessage } from 'element-plus'
|
|
105
|
+
import { useI18n } from 'vue-i18n'
|
|
83
106
|
const props = defineProps<{
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
// 是否是多选树,默认是true
|
|
108
|
+
multiple: {
|
|
109
|
+
type: Boolean
|
|
110
|
+
default: true
|
|
111
|
+
}
|
|
112
|
+
// 显示指定部门节点及其子节点,不传该属性,表示显示整个组织结构树
|
|
113
|
+
departmentInfo: {
|
|
114
|
+
type: Array<any>
|
|
115
|
+
default: null
|
|
116
|
+
}
|
|
117
|
+
// 多选部门树时,已选择部门id或部门名称或编码集合,多个之间以逗号隔开
|
|
118
|
+
selectDepartmentInfo: {
|
|
119
|
+
type: [String, Number]
|
|
120
|
+
default: null
|
|
121
|
+
}
|
|
122
|
+
// 移除部门时,部门属性名称:id、name、code,默认是id
|
|
123
|
+
searchField: {
|
|
124
|
+
type: String
|
|
125
|
+
default: 'id'
|
|
126
|
+
}
|
|
127
|
+
// 多选树时结果之间的分隔符,默认是逗号分隔
|
|
128
|
+
separator: {
|
|
129
|
+
type: String
|
|
130
|
+
default: ','
|
|
131
|
+
}
|
|
132
|
+
// 根据变量限制部门时,根据部门表的哪个字段进行过滤,默认是code
|
|
133
|
+
limitFilterColumn: {
|
|
134
|
+
type: String
|
|
135
|
+
default: 'code'
|
|
136
|
+
}
|
|
137
|
+
}>()
|
|
138
|
+
const emits = defineEmits(['close'])
|
|
111
139
|
const orgTreeRef = ref(null)
|
|
112
140
|
let tenantInfo = ref(null)
|
|
113
141
|
let containBranch = ref(false)
|
|
@@ -119,7 +147,7 @@ let selectDepts = ref([])
|
|
|
119
147
|
let selectDeptNodeIds = ref([])
|
|
120
148
|
let clickDepts = ref([])
|
|
121
149
|
let defaultCheckedKeys = ref([])
|
|
122
|
-
let deptResultRef:Ref<any> = ref(null)
|
|
150
|
+
let deptResultRef: Ref<any> = ref(null)
|
|
123
151
|
let checkAll = ref(false)
|
|
124
152
|
let searchParam = ref({
|
|
125
153
|
userField: 'name',
|
|
@@ -127,16 +155,16 @@ let searchParam = ref({
|
|
|
127
155
|
treeType: 'DEPARTMENT_TREE',
|
|
128
156
|
departmentInfo: null
|
|
129
157
|
})
|
|
130
|
-
const {t} = useI18n()
|
|
131
|
-
onMounted(()=>{
|
|
132
|
-
initSelectDepts(props.selectDepartmentInfo, tenantNodeId, props.searchField, props.separator
|
|
158
|
+
const { t } = useI18n()
|
|
159
|
+
onMounted(() => {
|
|
160
|
+
initSelectDepts(props.selectDepartmentInfo, tenantNodeId, props.searchField, props.separator).then((departments) => {
|
|
133
161
|
selectDepts.value = departments
|
|
134
162
|
getTenantInfo()
|
|
135
163
|
})
|
|
136
164
|
resizeScrollTargetHeight()
|
|
137
165
|
})
|
|
138
166
|
function getTenantInfo() {
|
|
139
|
-
getTenant().then(data=>{
|
|
167
|
+
getTenant().then((data) => {
|
|
140
168
|
const tenantData = data[0].data
|
|
141
169
|
tenantInfo.value = JSON.parse(tenantData)
|
|
142
170
|
containBranch.value = data[0].containBranch
|
|
@@ -146,77 +174,76 @@ function getTenantInfo() {
|
|
|
146
174
|
}
|
|
147
175
|
|
|
148
176
|
function getTenantChildrenDept() {
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
177
|
+
getTenantChildren(props.departmentInfo, tenantNodeId, props.limitFilterColumn).then((children) => {
|
|
178
|
+
departments.value = children
|
|
179
|
+
checkedDeptDefault(selectDepts.value, defaultCheckedKeys.value)
|
|
180
|
+
})
|
|
153
181
|
}
|
|
154
182
|
|
|
155
|
-
function
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
183
|
+
function resizeScrollTargetHeight() {
|
|
184
|
+
const scrollTarget = document.querySelector('.org-tree')
|
|
185
|
+
let height = resizeScrollTargetHeightUtil(scrollTarget)
|
|
186
|
+
const titleArea = 110
|
|
187
|
+
const deptPathArea = 60
|
|
188
|
+
const allCheckArea = 60
|
|
189
|
+
const buttonArea = 60
|
|
190
|
+
height = height - titleArea - deptPathArea - allCheckArea - buttonArea
|
|
191
|
+
scrollTarget['style'].height = height + 'px'
|
|
192
|
+
scrollTarget['style'].minHeight = '300px'
|
|
193
|
+
// scrollTarget.style.maxHeight = height + 'px'
|
|
166
194
|
}
|
|
167
195
|
// 点击复选框时处理
|
|
168
196
|
function handleCheckNode(data, check, isChildrenCheck) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
197
|
+
if (props.multiple) {
|
|
198
|
+
if (check) {
|
|
199
|
+
// 表示选择节点时
|
|
200
|
+
addToSelectDept(data)
|
|
201
|
+
} else {
|
|
202
|
+
// 表示取消选择
|
|
203
|
+
removeSelectDept(data)
|
|
177
204
|
}
|
|
205
|
+
}
|
|
178
206
|
}
|
|
179
207
|
|
|
180
208
|
function handleClickNode(data, node, treenode, events) {
|
|
181
|
-
if(!props.multiple && data.nodeType && data.nodeType === 'DEPARTMENT') {
|
|
209
|
+
if (!props.multiple && data.nodeType && data.nodeType === 'DEPARTMENT') {
|
|
182
210
|
selectDepts.value = [data]
|
|
183
211
|
}
|
|
184
212
|
}
|
|
185
213
|
|
|
186
|
-
|
|
187
214
|
function addToSelectDept(dept) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
}
|
|
215
|
+
if (dept.nodeType && dept.nodeType === 'DEPARTMENT') {
|
|
216
|
+
const filterValue = selectDepts.value.filter((item) => item.nodeId === dept.nodeId)
|
|
217
|
+
if (!filterValue || filterValue.length === 0) {
|
|
218
|
+
// 表示集合中没有该记录,需要记录到结果集合中
|
|
219
|
+
selectDepts.value.push(JSON.parse(JSON.stringify(dept)))
|
|
194
220
|
}
|
|
221
|
+
}
|
|
195
222
|
}
|
|
196
223
|
|
|
197
224
|
function removeSelectDept(dept) {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
225
|
+
const index = selectDepts.value.findIndex((selectItem) => selectItem.nodeId === dept.nodeId)
|
|
226
|
+
// 删除指定元素
|
|
227
|
+
selectDepts.value.splice(index, 1)
|
|
228
|
+
checkAll.value = false
|
|
202
229
|
}
|
|
203
230
|
function changeAllCheck(value: boolean) {
|
|
204
231
|
console.log('changeCheck====value=', value)
|
|
205
|
-
if(props.multiple) {
|
|
232
|
+
if (props.multiple) {
|
|
206
233
|
// 表示是复选组织树
|
|
207
|
-
if(value){
|
|
234
|
+
if (value) {
|
|
208
235
|
// 表示全选时
|
|
209
|
-
const allNodeIds = departments.value.map((item)=>{
|
|
210
|
-
|
|
236
|
+
const allNodeIds = departments.value.map((item) => {
|
|
237
|
+
return item['nodeId']
|
|
211
238
|
})
|
|
212
239
|
orgTreeRef.value.setCheckedKeys(allNodeIds, false)
|
|
213
|
-
departments.value.forEach(item=>{
|
|
240
|
+
departments.value.forEach((item) => {
|
|
214
241
|
addToSelectDept(item)
|
|
215
242
|
})
|
|
216
243
|
} else {
|
|
217
244
|
// 表示取消全选时
|
|
218
|
-
departments.value.forEach(item=>{
|
|
219
|
-
|
|
245
|
+
departments.value.forEach((item) => {
|
|
246
|
+
removeSelectDept(item)
|
|
220
247
|
})
|
|
221
248
|
orgTreeRef.value.setCheckedKeys([], false)
|
|
222
249
|
}
|
|
@@ -224,26 +251,25 @@ function changeAllCheck(value: boolean) {
|
|
|
224
251
|
}
|
|
225
252
|
|
|
226
253
|
function loadChildrenDept(dept) {
|
|
227
|
-
loadDepartment(dept.id).then(children=>{
|
|
254
|
+
loadDepartment(dept.id).then((children) => {
|
|
228
255
|
departments.value = children
|
|
229
|
-
checkedDeptDefault(selectDepts.value,
|
|
230
|
-
|
|
256
|
+
checkedDeptDefault(selectDepts.value, defaultCheckedKeys.value)
|
|
231
257
|
})
|
|
232
258
|
}
|
|
233
|
-
function
|
|
234
|
-
|
|
235
|
-
|
|
259
|
+
function loadChildren(dept, isBreadcrumb) {
|
|
260
|
+
clickDepts.value.push(dept)
|
|
261
|
+
loadChildrenDept(dept)
|
|
236
262
|
}
|
|
237
263
|
|
|
238
264
|
function clickBreadcrumb(item, isTenant, index) {
|
|
239
|
-
if(isTenant) {
|
|
265
|
+
if (isTenant) {
|
|
240
266
|
// 表示点击的时公司节点
|
|
241
267
|
clickDepts.value = []
|
|
242
268
|
getTenantChildrenDept()
|
|
243
269
|
} else {
|
|
244
270
|
// 表示点击的是部门节点
|
|
245
271
|
// 删除指定元素
|
|
246
|
-
clickDepts.value.splice(index+1, clickDepts.value.length - (index + 1)
|
|
272
|
+
clickDepts.value.splice(index + 1, clickDepts.value.length - (index + 1))
|
|
247
273
|
loadChildrenDept(item)
|
|
248
274
|
}
|
|
249
275
|
}
|
|
@@ -253,12 +279,12 @@ function showResult() {
|
|
|
253
279
|
}
|
|
254
280
|
|
|
255
281
|
function removeResultDept(dept) {
|
|
256
|
-
const removeDeptInDepts = selectDepts.value.filter(item=>item.nodeId === dept.nodeId)
|
|
257
|
-
if(removeDeptInDepts && removeDeptInDepts.length > 0) {
|
|
282
|
+
const removeDeptInDepts = selectDepts.value.filter((item) => item.nodeId === dept.nodeId)
|
|
283
|
+
if (removeDeptInDepts && removeDeptInDepts.length > 0) {
|
|
258
284
|
// departments结果存在当前移除的节点时,check-change事件会走removeSelectDept的逻辑
|
|
259
285
|
const selectNodeIds = []
|
|
260
|
-
selectDepts.value.forEach(item=>{
|
|
261
|
-
if(item.nodeId !== dept.nodeId) {
|
|
286
|
+
selectDepts.value.forEach((item) => {
|
|
287
|
+
if (item.nodeId !== dept.nodeId) {
|
|
262
288
|
selectNodeIds.push(item.nodeId)
|
|
263
289
|
}
|
|
264
290
|
})
|
|
@@ -268,106 +294,111 @@ function removeResultDept(dept) {
|
|
|
268
294
|
}
|
|
269
295
|
|
|
270
296
|
function saveDept() {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
} else {
|
|
288
|
-
departmentData = node
|
|
289
|
-
}
|
|
290
|
-
addSelectedDepartmentInfo(leafSelectNodeInfo, node, departmentData)
|
|
291
|
-
})
|
|
292
|
-
let selectNodeInfo = {
|
|
293
|
-
ids: [],
|
|
294
|
-
names: [],
|
|
295
|
-
zhNames: [],
|
|
296
|
-
enNames: [],
|
|
297
|
-
codes: [],
|
|
298
|
-
departments: []
|
|
299
|
-
}
|
|
300
|
-
Object.assign(selectNodeInfo, leafSelectNodeInfo)
|
|
301
|
-
if (selectNodeInfo.ids.length > 0) {
|
|
302
|
-
emits('close', selectNodeInfo)
|
|
303
|
-
} else {
|
|
304
|
-
ElMessage({
|
|
305
|
-
message: t('imatrixUIMessage.pleaseSelectDepartment'),
|
|
306
|
-
type: 'warning',
|
|
307
|
-
})
|
|
308
|
-
}
|
|
297
|
+
if (props.multiple) {
|
|
298
|
+
let leafSelectNodeInfo = {
|
|
299
|
+
ids: [],
|
|
300
|
+
names: [],
|
|
301
|
+
zhNames: [],
|
|
302
|
+
enNames: [],
|
|
303
|
+
codes: [],
|
|
304
|
+
departments: []
|
|
305
|
+
}
|
|
306
|
+
// const parentIds = []
|
|
307
|
+
selectDepts.value.forEach((node) => {
|
|
308
|
+
// node.data是部门对象的json字符串信息,通过JSON.parse(node.data)将json字符串转为对象
|
|
309
|
+
let departmentData
|
|
310
|
+
// 点开initSelectDepts 查询的数据只有一层
|
|
311
|
+
if (node.data !== null && node.data !== undefined) {
|
|
312
|
+
departmentData = JSON.parse(node.data)
|
|
309
313
|
} else {
|
|
310
|
-
|
|
311
|
-
const department = JSON.parse(dept.data)
|
|
312
|
-
const showName = dept.showName
|
|
313
|
-
// if (this.containBranch && dept.branchName) {
|
|
314
|
-
// // 如果包含分支机构,则拼接分支机构名称
|
|
315
|
-
// name = name + '(' + dept.branchName + ')'
|
|
316
|
-
// }
|
|
317
|
-
department.tenantName = tenantInfo.value.tenantName
|
|
318
|
-
department.tenantCode = tenantInfo.value.code
|
|
319
|
-
const selectNodeInfo = {
|
|
320
|
-
id: dept.id,
|
|
321
|
-
name: showName,
|
|
322
|
-
zhName: department.name,
|
|
323
|
-
enName: department.enName,
|
|
324
|
-
code: department.code,
|
|
325
|
-
containBranch: containBranch.value,
|
|
326
|
-
department: department
|
|
327
|
-
}
|
|
328
|
-
emits('close', selectNodeInfo)
|
|
314
|
+
departmentData = node
|
|
329
315
|
}
|
|
316
|
+
addSelectedDepartmentInfo(leafSelectNodeInfo, node, departmentData)
|
|
317
|
+
})
|
|
318
|
+
let selectNodeInfo = {
|
|
319
|
+
ids: [],
|
|
320
|
+
names: [],
|
|
321
|
+
zhNames: [],
|
|
322
|
+
enNames: [],
|
|
323
|
+
codes: [],
|
|
324
|
+
departments: []
|
|
330
325
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
326
|
+
Object.assign(selectNodeInfo, leafSelectNodeInfo)
|
|
327
|
+
if (selectNodeInfo.ids.length > 0) {
|
|
328
|
+
emits('close', selectNodeInfo)
|
|
329
|
+
} else {
|
|
330
|
+
ElMessage({
|
|
331
|
+
message: t('imatrixUIMessage.pleaseSelectDepartment'),
|
|
332
|
+
type: 'warning'
|
|
333
|
+
})
|
|
334
|
+
}
|
|
335
|
+
} else {
|
|
336
|
+
const dept = selectDepts.value[0]
|
|
337
|
+
const department = JSON.parse(dept.data)
|
|
338
|
+
const showName = dept.showName
|
|
339
|
+
// if (this.containBranch && dept.branchName) {
|
|
340
|
+
// // 如果包含分支机构,则拼接分支机构名称
|
|
341
|
+
// name = name + '(' + dept.branchName + ')'
|
|
342
|
+
// }
|
|
343
|
+
department.tenantName = tenantInfo.value.tenantName
|
|
344
|
+
department.tenantCode = tenantInfo.value.code
|
|
345
|
+
const selectNodeInfo = {
|
|
346
|
+
id: dept.id,
|
|
347
|
+
name: showName,
|
|
348
|
+
zhName: department.name,
|
|
349
|
+
enName: department.enName,
|
|
350
|
+
code: department.code,
|
|
351
|
+
containBranch: containBranch.value,
|
|
352
|
+
department: department
|
|
347
353
|
}
|
|
354
|
+
emits('close', selectNodeInfo)
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
// 将选中的部门节点添加到结果集合中
|
|
358
|
+
function addSelectedDepartmentInfo(result, node, department) {
|
|
359
|
+
result.ids.push(node.id)
|
|
360
|
+
result.codes.push(department.code)
|
|
361
|
+
result.containBranch = containBranch.value
|
|
362
|
+
department.tenantCode = tenantInfo.value.code
|
|
363
|
+
department.tenantName = tenantInfo.value.tenantName
|
|
364
|
+
result.departments.push(department)
|
|
365
|
+
const showName = department.showName
|
|
366
|
+
// if (this.containBranch && node.branchName) {
|
|
367
|
+
// // 如果包含分支机构,则拼接分支机构名称
|
|
368
|
+
// name = name + '(' + node.branchName + ')'
|
|
369
|
+
// }
|
|
370
|
+
result.names.push(showName)
|
|
371
|
+
result.zhNames.push(department.name)
|
|
372
|
+
result.enNames.push(department.enName ? department.enName : '')
|
|
373
|
+
}
|
|
348
374
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
375
|
+
function filterAppendNodes() {
|
|
376
|
+
if (searchParam.value.searchValue) {
|
|
377
|
+
searchParam.value.searchValue = searchParam.value.searchValue.trim()
|
|
378
|
+
searchParam.value.departmentInfo = props.departmentInfo
|
|
379
|
+
window['$vueApp'].config.globalProperties.$http
|
|
380
|
+
.post(
|
|
381
|
+
window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/search-depts',
|
|
382
|
+
searchParam.value
|
|
383
|
+
)
|
|
384
|
+
.then((result) => {
|
|
354
385
|
if (result) {
|
|
355
386
|
if (result.length === 0) {
|
|
356
387
|
ElMessage({
|
|
357
388
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
358
|
-
type: 'warning'
|
|
389
|
+
type: 'warning'
|
|
359
390
|
})
|
|
360
391
|
}
|
|
361
392
|
departments.value = result
|
|
362
393
|
} else {
|
|
363
394
|
ElMessage({
|
|
364
395
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
365
|
-
type: 'warning'
|
|
396
|
+
type: 'warning'
|
|
366
397
|
})
|
|
367
398
|
}
|
|
368
399
|
})
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
400
|
+
} else {
|
|
401
|
+
getTenantChildrenDept()
|
|
402
|
+
}
|
|
372
403
|
}
|
|
373
|
-
</script>
|
|
404
|
+
</script>
|