agilebuilder-ui 1.1.48 → 1.1.50-rc1
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-64e37702.js → 401-aaa4054d.js} +1 -1
- package/lib/{404-7d89180e.js → 404-ef3b10e9.js} +1 -1
- package/lib/{iframe-page-4c8bc1d5.js → iframe-page-28c30283.js} +1 -1
- package/lib/{index-5c1112e8.js → index-bece2c1c.js} +19139 -19078
- package/lib/super-ui.css +1 -1
- package/lib/super-ui.js +1 -1
- package/lib/super-ui.umd.cjs +99 -99
- package/lib/{tab-content-iframe-index-0a36be80.js → tab-content-iframe-index-87ac3b2b.js} +1 -1
- package/lib/{tab-content-index-9a271908.js → tab-content-index-956a0533.js} +1 -1
- package/lib/{tache-subprocess-history-93d013b2.js → tache-subprocess-history-2c4f98f2.js} +1 -1
- package/package.json +1 -1
- package/packages/department-tree-inline/src/department-multi-tree-inline.vue +42 -34
- package/packages/department-tree-inline/src/department-single-tree-inline.vue +53 -42
- package/packages/department-tree-inline/src/department-tree-service.js +17 -11
- package/packages/department-tree-inline/src/search-result.vue +187 -219
- package/packages/department-tree-mobile/src/department-tree-inline-app.vue +17 -4
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +52 -43
- package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +52 -42
- package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +23 -13
- package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +9 -5
- package/packages/department-user-tree-inline/src/group-user-tree-service.js +17 -11
- package/packages/department-user-tree-inline/src/search-result.vue +207 -220
- package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +14 -3
- package/packages/dynamic-source-select/src/dynamic-source-select-service.js +7 -2
- package/packages/empty-state/index.vue +28 -0
- package/packages/fs-preview/src/fs-preview.vue +10 -4
- package/packages/fs-upload/src/fs-upload-multi.vue +10 -6
- package/packages/fs-upload/src/fs-upload-single.vue +8 -7
- package/packages/fs-upload/src/fs-upload.vue +3 -1
- package/packages/fs-upload/src/see-big-picture.vue +3 -0
- package/packages/fs-upload-list/src/fs-upload-list.vue +2 -1
- package/packages/fs-upload-new/src/fs-button-upload.vue +3 -3
- package/packages/fs-upload-new/src/fs-drag-upload.vue +3 -3
- package/packages/fs-upload-new/src/fs-preview-new.vue +11 -7
- package/packages/multipart-upload/src/multipart-upload-form.vue +2 -1
- package/packages/multipart-upload/src/multipart-upload-list.vue +2 -1
- package/packages/plugins/export-data-new.js +2 -0
- package/packages/super-grid/src/components/grid-icon.vue +6 -3
- package/packages/super-grid/src/normal-column-content.vue +1 -1
- package/packages/super-grid/src/super-grid.vue +4 -4
- package/packages/super-grid/src/view-image-dialog.vue +2 -1
- package/packages/utils/utils.js +27 -9
- package/packages/workgroup-tree-inline/src/search-result.vue +2 -1
- package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +50 -41
- package/packages/workgroup-tree-mobile/src/workgroup-tree-inline-app.vue +16 -5
- package/packages/workgroup-user-tree-inline/src/search-result.vue +2 -1
- package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +30 -24
- package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +49 -37
- package/packages/workgroup-user-tree-mobile/src/workgroup-user-tree-inline-app.vue +281 -222
- package/src/i18n/langs/cn.js +3 -3
- package/src/i18n/langs/en.js +3 -3
- package/src/styles/index.scss +26 -0
- package/src/utils/auth.js +10 -7
- package/src/utils/chat-ai-util.ts +3 -3
- package/src/utils/common-util.js +44 -0
- package/src/utils/global-prop.js +17 -0
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +6 -0
- package/src/views/dsc-component/tabs/tab-content.vue +6 -0
|
@@ -2,122 +2,168 @@
|
|
|
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('departmentUserTree.pleaseEnterUserInformation')"
|
|
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">
|
|
42
|
+
<el-empty v-if="!departments.length" :image="noMessageImage"> </el-empty>
|
|
27
43
|
<el-tree
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
<
|
|
39
|
-
<div
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
v-else
|
|
45
|
+
ref="orgTreeRef"
|
|
46
|
+
:data="departments"
|
|
47
|
+
:show-checkbox="multiple"
|
|
48
|
+
node-key="nodeId"
|
|
49
|
+
:props="defaultProps"
|
|
50
|
+
:default-checked-keys="defaultCheckedKeys"
|
|
51
|
+
@check-change="handleCheckNode"
|
|
52
|
+
@node-click="handleClickNode"
|
|
53
|
+
>
|
|
54
|
+
<template #default="{ node, data }">
|
|
55
|
+
<div class="item-row">
|
|
56
|
+
<div v-if="data.nodeType && data.nodeType === 'USER'" class="item-label">
|
|
57
|
+
{{ data.showName }}
|
|
58
|
+
<span style="color: #999"
|
|
59
|
+
>({{ data.loginName }}{{ getUserMainDeptName(data) ? '/' + getUserMainDeptName(data) : '' }})</span
|
|
60
|
+
>
|
|
61
|
+
</div>
|
|
62
|
+
<div v-else class="item-label" @click="loadChildren(data, false)">{{ data.name }}</div>
|
|
63
|
+
<div v-if="!data.nodeType || data.nodeType !== 'USER'" class="item-side" @click="loadChildren(data, false)">
|
|
64
|
+
<el-icon><ArrowRight /></el-icon>
|
|
65
|
+
</div>
|
|
45
66
|
</div>
|
|
46
|
-
</
|
|
47
|
-
</
|
|
48
|
-
</el-tree>
|
|
67
|
+
</template>
|
|
68
|
+
</el-tree>
|
|
49
69
|
</el-card>
|
|
50
|
-
<el-card
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
<el-card class="card-footer">
|
|
71
|
+
<div style="display: flex">
|
|
72
|
+
<div class="select-result">
|
|
73
|
+
<!-- 已选择:{useNum}个用户,{deptNum}个部门(含子部门) -->
|
|
74
|
+
<!-- {{$t('departmentUserTree.selectResultInfo',{userNum: selectUsers.length, deptNum: selectDepts.length})}} -->
|
|
75
|
+
<span v-if="multiple" @click="showResult">
|
|
76
|
+
<span v-if="selectUsers.length > 0 && selectDepts.length > 0"
|
|
77
|
+
>{{ $t('departmentTreeInline.selectResultInfoHasSelect')
|
|
78
|
+
}}{{ $t('departmentUserTree.selectUserResultInfo', { userNum: selectUsers.length }) }},
|
|
79
|
+
{{ $t('departmentUserTree.selectDeptResultInfo', { deptNum: selectDepts.length }) }}</span
|
|
80
|
+
>
|
|
81
|
+
<span v-else-if="selectUsers.length > 0"
|
|
82
|
+
>{{ $t('departmentTreeInline.selectResultInfoHasSelect')
|
|
83
|
+
}}{{ $t('departmentUserTree.selectUserResultInfo', { userNum: selectUsers.length }) }}</span
|
|
84
|
+
>
|
|
85
|
+
<span v-else-if="selectDepts.length > 0"
|
|
86
|
+
>{{ $t('departmentTreeInline.selectResultInfoHasSelect')
|
|
87
|
+
}}{{ $t('departmentUserTree.selectDeptResultInfo', { deptNum: selectDepts.length }) }}</span
|
|
88
|
+
>
|
|
89
|
+
<span v-if="selectUsers.length > 0 || selectDepts.length > 0" style="padding-left: 10px"
|
|
90
|
+
><el-icon><ArrowUpBold /></el-icon
|
|
91
|
+
></span>
|
|
92
|
+
</span>
|
|
93
|
+
<span v-else-if="selectUsers.length > 0">
|
|
94
|
+
{{ $t('departmentTreeInline.selectResultInfoHasSelect') }}{{ selectUsers[0].showName
|
|
95
|
+
}}<span style="color: #999"
|
|
96
|
+
>({{ selectUsers[0].loginName
|
|
97
|
+
}}{{ getUserMainDeptName(selectUsers[0]) ? '/' + getUserMainDeptName(selectUsers[0]) : '' }})</span
|
|
98
|
+
>
|
|
99
|
+
</span>
|
|
100
|
+
</div>
|
|
101
|
+
<div class="button-area">
|
|
102
|
+
<el-button size="large" type="primary" @click="saveDept">{{ $t('imatrixUIPublicModel.sure') }}</el-button>
|
|
103
|
+
</div>
|
|
68
104
|
</div>
|
|
69
|
-
</div>
|
|
70
105
|
</el-card>
|
|
71
|
-
<deptResult ref="deptResultRef" :selectUsers="selectUsers.concat(selectDepts)" @removeResult="removeResultDept"/>
|
|
106
|
+
<deptResult ref="deptResultRef" :selectUsers="selectUsers.concat(selectDepts)" @removeResult="removeResultDept" />
|
|
72
107
|
</div>
|
|
73
108
|
</template>
|
|
74
109
|
|
|
75
|
-
<script
|
|
76
|
-
import { reactive,ref,onMounted, defineEmits,Ref } from 'vue'
|
|
110
|
+
<script setup lang="ts">
|
|
111
|
+
import { reactive, ref, onMounted, defineEmits, Ref } from 'vue'
|
|
112
|
+
import { ArrowRight, Search, ArrowUpBold } from '@element-plus/icons-vue'
|
|
77
113
|
import {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
114
|
+
getTenant,
|
|
115
|
+
getTenantChildren,
|
|
116
|
+
checkedDeptDefault,
|
|
117
|
+
loadChildNodes,
|
|
118
|
+
getUserInWorkgroups
|
|
119
|
+
} from './workgroup-user-tree-service.ts'
|
|
120
|
+
import {
|
|
121
|
+
resizeScrollTargetHeightUtil,
|
|
122
|
+
getUserMainDeptName,
|
|
123
|
+
getDeptNamePath,
|
|
124
|
+
initSelectUsers,
|
|
125
|
+
addSelectedUserInfo,
|
|
126
|
+
packageSelectResult
|
|
127
|
+
} from '../../utils/organization.ts'
|
|
84
128
|
import deptPath from './dept-path.vue'
|
|
85
129
|
import deptResult from './dept-result.vue'
|
|
86
|
-
import {ElMessage} from 'element-plus'
|
|
87
|
-
import {useI18n} from
|
|
130
|
+
import { ElMessage } from 'element-plus'
|
|
131
|
+
import { useI18n } from 'vue-i18n'
|
|
132
|
+
import utils from '../../utils/utils'
|
|
133
|
+
import noMessageImage from '../../../src/assets/nonemessage.png'
|
|
88
134
|
const props = defineProps<{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
const emits = defineEmits([
|
|
135
|
+
// 是否是多选树,默认是true
|
|
136
|
+
multiple: {
|
|
137
|
+
type: Boolean
|
|
138
|
+
default: true
|
|
139
|
+
}
|
|
140
|
+
// 显示指定部门节点及其子节点,不传该属性,表示显示整个组织结构树
|
|
141
|
+
branchInfo: {
|
|
142
|
+
type: Array<any>
|
|
143
|
+
default: null
|
|
144
|
+
}
|
|
145
|
+
// 多选用户树时,已选择用户id或登录名集合,多个之间以逗号隔开
|
|
146
|
+
selectUserInfo: {
|
|
147
|
+
type: [String, Number]
|
|
148
|
+
default: null
|
|
149
|
+
}
|
|
150
|
+
// 移除用户时,用户属性名称:id、loginName、email、telephone,默认是loginName
|
|
151
|
+
searchField: {
|
|
152
|
+
type: String
|
|
153
|
+
default: 'loginName'
|
|
154
|
+
}
|
|
155
|
+
// 多选树时结果之间的分隔符,默认是逗号分隔
|
|
156
|
+
separator: {
|
|
157
|
+
type: String
|
|
158
|
+
default: ','
|
|
159
|
+
}
|
|
160
|
+
}>()
|
|
161
|
+
const emits = defineEmits(['close'])
|
|
116
162
|
const orgTreeRef = ref(null)
|
|
117
163
|
let tenantInfo = ref(null)
|
|
118
164
|
let containBranch = ref(false)
|
|
119
165
|
let tenantName = ref(null)
|
|
120
|
-
let tenantNodeId =
|
|
166
|
+
let tenantNodeId = '-1'
|
|
121
167
|
let departments = ref([])
|
|
122
168
|
let checkedKeys = ref([])
|
|
123
169
|
let selectUsers = ref([])
|
|
@@ -125,7 +171,7 @@ let selectDepts = ref([])
|
|
|
125
171
|
let selectDeptNodeIds = ref([])
|
|
126
172
|
let clickDepts = ref([])
|
|
127
173
|
let defaultCheckedKeys = ref([])
|
|
128
|
-
let deptResultRef:Ref<any> = ref(null)
|
|
174
|
+
let deptResultRef: Ref<any> = ref(null)
|
|
129
175
|
let checkAll = ref(false)
|
|
130
176
|
let searchParam = ref({
|
|
131
177
|
searchValue: null,
|
|
@@ -133,20 +179,20 @@ let searchParam = ref({
|
|
|
133
179
|
departmentInfo: null
|
|
134
180
|
})
|
|
135
181
|
let defaultProps = ref({
|
|
136
|
-
|
|
137
|
-
|
|
182
|
+
disabled: 'disable'
|
|
138
183
|
})
|
|
139
184
|
let loading = ref(false)
|
|
140
|
-
const {t} = useI18n()
|
|
141
|
-
|
|
142
|
-
|
|
185
|
+
const { t } = useI18n()
|
|
186
|
+
|
|
187
|
+
onMounted(() => {
|
|
188
|
+
initSelectUsers(props.searchField, props.selectUserInfo, props.separator).then((departments) => {
|
|
143
189
|
selectUsers.value = departments
|
|
144
190
|
getTenantInfo()
|
|
145
191
|
})
|
|
146
192
|
resizeScrollTargetHeight()
|
|
147
193
|
})
|
|
148
194
|
function getTenantInfo() {
|
|
149
|
-
getTenant().then(data=>{
|
|
195
|
+
getTenant().then((data) => {
|
|
150
196
|
const tenantData = data[0].data
|
|
151
197
|
tenantInfo.value = JSON.parse(tenantData)
|
|
152
198
|
containBranch.value = data[0].containBranch
|
|
@@ -156,59 +202,65 @@ function getTenantInfo() {
|
|
|
156
202
|
}
|
|
157
203
|
|
|
158
204
|
function getTenantChildrenDept() {
|
|
159
|
-
|
|
205
|
+
utils.canShowOrgTree().then((showOrgTree) => {
|
|
206
|
+
if (showOrgTree) {
|
|
207
|
+
getTenantChildren(props.branchInfo, tenantNodeId).then((children) => {
|
|
160
208
|
departments.value = children
|
|
161
209
|
checkedDeptDefault(selectUsers.value, defaultCheckedKeys.value)
|
|
162
|
-
|
|
210
|
+
})
|
|
211
|
+
} else {
|
|
212
|
+
departments.value = []
|
|
213
|
+
}
|
|
214
|
+
})
|
|
163
215
|
}
|
|
164
216
|
|
|
165
|
-
function
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
217
|
+
function resizeScrollTargetHeight() {
|
|
218
|
+
const scrollTarget = document.querySelector('.org-tree')
|
|
219
|
+
let height = resizeScrollTargetHeightUtil(scrollTarget)
|
|
220
|
+
const titleArea = 110
|
|
221
|
+
const deptPathArea = 60
|
|
222
|
+
const allCheckArea = 60
|
|
223
|
+
const buttonArea = 60
|
|
224
|
+
height = height - titleArea - deptPathArea - allCheckArea - buttonArea
|
|
225
|
+
scrollTarget['style'].height = height + 'px'
|
|
226
|
+
scrollTarget['style'].minHeight = '300px'
|
|
227
|
+
// scrollTarget.style.maxHeight = height + 'px'
|
|
176
228
|
}
|
|
177
229
|
// 点击复选框时处理
|
|
178
230
|
function handleCheckNode(data, check, isChildrenCheck) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
231
|
+
if (props.multiple) {
|
|
232
|
+
if (check) {
|
|
233
|
+
// 表示选择节点时
|
|
234
|
+
if (props.multiple) {
|
|
235
|
+
// 表示是复选组织树
|
|
236
|
+
addToSelectDept(data)
|
|
237
|
+
}
|
|
238
|
+
} else {
|
|
239
|
+
// 表示取消选择
|
|
240
|
+
if (props.multiple || (data.nodeType && data.nodeType === 'USER')) {
|
|
241
|
+
removeSelectDept(data)
|
|
191
242
|
}
|
|
192
243
|
}
|
|
244
|
+
}
|
|
193
245
|
}
|
|
194
246
|
|
|
195
247
|
function handleClickNode(data, node, treenode, events) {
|
|
196
|
-
if(!props.multiple && data.nodeType && data.nodeType === 'USER') {
|
|
248
|
+
if (!props.multiple && data.nodeType && data.nodeType === 'USER') {
|
|
197
249
|
selectUsers.value = [data]
|
|
198
250
|
}
|
|
199
251
|
}
|
|
200
252
|
function addToSelectDept(dept) {
|
|
201
|
-
if(dept.nodeType && dept.nodeType === 'USER') {
|
|
253
|
+
if (dept.nodeType && dept.nodeType === 'USER') {
|
|
202
254
|
// 表示是用户
|
|
203
|
-
const filterValue = selectUsers.value.filter(item=> item.nodeId === dept.nodeId)
|
|
204
|
-
if(!filterValue || filterValue.length === 0) {
|
|
255
|
+
const filterValue = selectUsers.value.filter((item) => item.nodeId === dept.nodeId)
|
|
256
|
+
if (!filterValue || filterValue.length === 0) {
|
|
205
257
|
// 表示集合中没有该记录,需要记录到结果集合中
|
|
206
258
|
selectUsers.value.push(JSON.parse(JSON.stringify(dept)))
|
|
207
259
|
}
|
|
208
260
|
} else {
|
|
209
261
|
// 表示是部门
|
|
210
|
-
const filterValue = selectDepts.value.filter(item=> item.nodeId === dept.nodeId)
|
|
211
|
-
if(!filterValue || filterValue.length === 0) {
|
|
262
|
+
const filterValue = selectDepts.value.filter((item) => item.nodeId === dept.nodeId)
|
|
263
|
+
if (!filterValue || filterValue.length === 0) {
|
|
212
264
|
// 表示集合中没有该记录,需要记录到结果集合中
|
|
213
265
|
selectDepts.value.push(JSON.parse(JSON.stringify(dept)))
|
|
214
266
|
}
|
|
@@ -216,35 +268,35 @@ function addToSelectDept(dept) {
|
|
|
216
268
|
}
|
|
217
269
|
|
|
218
270
|
function removeSelectDept(dept) {
|
|
219
|
-
if(dept.nodeType && dept.nodeType === 'USER') {
|
|
220
|
-
const index = selectUsers.value.findIndex(selectItem=> selectItem.nodeId === dept.nodeId)
|
|
271
|
+
if (dept.nodeType && dept.nodeType === 'USER') {
|
|
272
|
+
const index = selectUsers.value.findIndex((selectItem) => selectItem.nodeId === dept.nodeId)
|
|
221
273
|
// 删除指定元素
|
|
222
274
|
selectUsers.value.splice(index, 1)
|
|
223
275
|
} else {
|
|
224
|
-
const index = selectDepts.value.findIndex(selectItem=> selectItem.nodeId === dept.nodeId)
|
|
276
|
+
const index = selectDepts.value.findIndex((selectItem) => selectItem.nodeId === dept.nodeId)
|
|
225
277
|
// 删除指定元素
|
|
226
278
|
selectDepts.value.splice(index, 1)
|
|
227
279
|
}
|
|
228
|
-
|
|
229
|
-
|
|
280
|
+
|
|
281
|
+
checkAll.value = false
|
|
230
282
|
}
|
|
231
283
|
function changeAllCheck(value: boolean) {
|
|
232
284
|
console.log('changeCheck====value=', value)
|
|
233
|
-
if(props.multiple) {
|
|
285
|
+
if (props.multiple) {
|
|
234
286
|
// 表示是复选组织树
|
|
235
|
-
if(value){
|
|
287
|
+
if (value) {
|
|
236
288
|
// 表示全选时
|
|
237
|
-
const allNodeIds = departments.value.map((item)=>{
|
|
238
|
-
|
|
289
|
+
const allNodeIds = departments.value.map((item) => {
|
|
290
|
+
return item['nodeId']
|
|
239
291
|
})
|
|
240
292
|
orgTreeRef.value.setCheckedKeys(allNodeIds, false)
|
|
241
|
-
departments.value.forEach(item=>{
|
|
293
|
+
departments.value.forEach((item) => {
|
|
242
294
|
addToSelectDept(item)
|
|
243
295
|
})
|
|
244
296
|
} else {
|
|
245
297
|
// 表示取消全选时
|
|
246
|
-
departments.value.forEach(item=>{
|
|
247
|
-
|
|
298
|
+
departments.value.forEach((item) => {
|
|
299
|
+
removeSelectDept(item)
|
|
248
300
|
})
|
|
249
301
|
orgTreeRef.value.setCheckedKeys([], false)
|
|
250
302
|
}
|
|
@@ -252,25 +304,25 @@ function changeAllCheck(value: boolean) {
|
|
|
252
304
|
}
|
|
253
305
|
|
|
254
306
|
function loadChildrenDept(dept) {
|
|
255
|
-
loadChildNodes(props.branchInfo, dept.id).then(children=>{
|
|
307
|
+
loadChildNodes(props.branchInfo, dept.id).then((children) => {
|
|
256
308
|
departments.value = children
|
|
257
|
-
checkedDeptDefault(selectUsers.value,
|
|
309
|
+
checkedDeptDefault(selectUsers.value, defaultCheckedKeys.value)
|
|
258
310
|
})
|
|
259
311
|
}
|
|
260
|
-
function
|
|
261
|
-
|
|
262
|
-
|
|
312
|
+
function loadChildren(dept, isBreadcrumb) {
|
|
313
|
+
clickDepts.value.push(dept)
|
|
314
|
+
loadChildrenDept(dept)
|
|
263
315
|
}
|
|
264
316
|
|
|
265
317
|
function clickBreadcrumb(item, isTenant, index) {
|
|
266
|
-
if(isTenant) {
|
|
318
|
+
if (isTenant) {
|
|
267
319
|
// 表示点击的时公司节点
|
|
268
320
|
clickDepts.value = []
|
|
269
321
|
getTenantChildrenDept()
|
|
270
322
|
} else {
|
|
271
323
|
// 表示点击的是部门节点
|
|
272
324
|
// 删除指定元素
|
|
273
|
-
clickDepts.value.splice(index+1, clickDepts.value.length - (index + 1)
|
|
325
|
+
clickDepts.value.splice(index + 1, clickDepts.value.length - (index + 1))
|
|
274
326
|
loadChildrenDept(item)
|
|
275
327
|
}
|
|
276
328
|
}
|
|
@@ -280,17 +332,17 @@ function showResult() {
|
|
|
280
332
|
}
|
|
281
333
|
|
|
282
334
|
function removeResultDept(dept) {
|
|
283
|
-
const removeDeptInDepts = departments.value.filter(item=>item.nodeId === dept.nodeId)
|
|
284
|
-
if(removeDeptInDepts && removeDeptInDepts.length > 0) {
|
|
335
|
+
const removeDeptInDepts = departments.value.filter((item) => item.nodeId === dept.nodeId)
|
|
336
|
+
if (removeDeptInDepts && removeDeptInDepts.length > 0) {
|
|
285
337
|
// departments结果存在当前移除的节点时,check-change事件会走removeSelectDept的逻辑
|
|
286
338
|
const selectNodeIds = []
|
|
287
|
-
selectUsers.value.forEach(item=>{
|
|
288
|
-
if(item.nodeId !== dept.nodeId) {
|
|
339
|
+
selectUsers.value.forEach((item) => {
|
|
340
|
+
if (item.nodeId !== dept.nodeId) {
|
|
289
341
|
selectNodeIds.push(item.nodeId)
|
|
290
342
|
}
|
|
291
343
|
})
|
|
292
|
-
selectDepts.value.forEach(item=>{
|
|
293
|
-
if(item.nodeId !== dept.nodeId) {
|
|
344
|
+
selectDepts.value.forEach((item) => {
|
|
345
|
+
if (item.nodeId !== dept.nodeId) {
|
|
294
346
|
selectNodeIds.push(item.nodeId)
|
|
295
347
|
}
|
|
296
348
|
})
|
|
@@ -299,96 +351,103 @@ function removeResultDept(dept) {
|
|
|
299
351
|
removeSelectDept(dept)
|
|
300
352
|
}
|
|
301
353
|
|
|
302
|
-
function saveDept
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
354
|
+
function saveDept() {
|
|
355
|
+
if (selectDepts.value.length === 0 && selectUsers.value.length === 0) {
|
|
356
|
+
ElMessage({
|
|
357
|
+
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
358
|
+
type: 'warning'
|
|
359
|
+
})
|
|
360
|
+
return
|
|
361
|
+
}
|
|
362
|
+
if (props.multiple) {
|
|
363
|
+
const selectNodeInfo = {
|
|
364
|
+
userIds: [],
|
|
365
|
+
userNames: [],
|
|
366
|
+
loginNames: [],
|
|
367
|
+
userZhNames: [],
|
|
368
|
+
userEnNames: [],
|
|
369
|
+
emails: [],
|
|
370
|
+
telephones: [],
|
|
371
|
+
users: []
|
|
372
|
+
}
|
|
373
|
+
const departmentIds = []
|
|
374
|
+
selectDepts.value.forEach((node) => {
|
|
375
|
+
// 部门集合,最后确定时会使用该集合去后台获得用户集合
|
|
376
|
+
departmentIds.push(node.id)
|
|
377
|
+
})
|
|
378
|
+
selectUsers.value.forEach((node) => {
|
|
379
|
+
// 用户集合
|
|
380
|
+
// node.data是部门对象的json字符串信息,通过JSON.parse(node.data)将json字符串转为对象
|
|
381
|
+
const userData = JSON.parse(node.data)
|
|
382
|
+
addSelectedUserInfo(selectNodeInfo, userData, containBranch.value)
|
|
383
|
+
})
|
|
384
|
+
loading.value = true
|
|
385
|
+
if (departmentIds.length > 0) {
|
|
386
|
+
getUserInWorkgroups(departmentIds)
|
|
387
|
+
.then((users) => {
|
|
388
|
+
if (users) {
|
|
389
|
+
users.forEach((user) => {
|
|
390
|
+
addSelectedUserInfo(selectNodeInfo, user, containBranch.value)
|
|
307
391
|
})
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
if (props.multiple) {
|
|
311
|
-
const selectNodeInfo = {
|
|
312
|
-
userIds: [],
|
|
313
|
-
userNames: [],
|
|
314
|
-
loginNames: [],
|
|
315
|
-
userZhNames: [],
|
|
316
|
-
userEnNames: [],
|
|
317
|
-
emails: [],
|
|
318
|
-
telephones: [],
|
|
319
|
-
users: []
|
|
320
|
-
}
|
|
321
|
-
const departmentIds = []
|
|
322
|
-
selectDepts.value.forEach(node => {
|
|
323
|
-
// 部门集合,最后确定时会使用该集合去后台获得用户集合
|
|
324
|
-
departmentIds.push(node.id)
|
|
325
|
-
})
|
|
326
|
-
selectUsers.value.forEach(node => {
|
|
327
|
-
// 用户集合
|
|
328
|
-
// node.data是部门对象的json字符串信息,通过JSON.parse(node.data)将json字符串转为对象
|
|
329
|
-
const userData = JSON.parse(node.data)
|
|
330
|
-
addSelectedUserInfo(selectNodeInfo, userData, containBranch.value)
|
|
331
|
-
})
|
|
332
|
-
loading.value = true
|
|
333
|
-
if (departmentIds.length > 0) {
|
|
334
|
-
getUserInWorkgroups(departmentIds).then(users => {
|
|
335
|
-
if (users) {
|
|
336
|
-
users.forEach(user => {
|
|
337
|
-
addSelectedUserInfo(selectNodeInfo, user, containBranch.value)
|
|
338
|
-
})
|
|
339
|
-
}
|
|
340
|
-
loading.value = false
|
|
341
|
-
if (selectNodeInfo.userIds.length > 0) {
|
|
342
|
-
emits('close', selectNodeInfo)
|
|
343
|
-
} else {
|
|
344
|
-
ElMessage({
|
|
345
|
-
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
346
|
-
type: 'warning',
|
|
347
|
-
})
|
|
348
|
-
}
|
|
349
|
-
}).catch(() => {
|
|
350
|
-
loading.value = false
|
|
351
|
-
})
|
|
352
|
-
} else {
|
|
353
|
-
loading.value = false
|
|
392
|
+
}
|
|
393
|
+
loading.value = false
|
|
354
394
|
if (selectNodeInfo.userIds.length > 0) {
|
|
355
395
|
emits('close', selectNodeInfo)
|
|
356
396
|
} else {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
397
|
+
ElMessage({
|
|
398
|
+
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
399
|
+
type: 'warning'
|
|
400
|
+
})
|
|
361
401
|
}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
402
|
+
})
|
|
403
|
+
.catch(() => {
|
|
404
|
+
loading.value = false
|
|
405
|
+
})
|
|
406
|
+
} else {
|
|
407
|
+
loading.value = false
|
|
408
|
+
if (selectNodeInfo.userIds.length > 0) {
|
|
366
409
|
emits('close', selectNodeInfo)
|
|
410
|
+
} else {
|
|
411
|
+
ElMessage({
|
|
412
|
+
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
413
|
+
type: 'warning'
|
|
414
|
+
})
|
|
367
415
|
}
|
|
368
416
|
}
|
|
417
|
+
} else {
|
|
418
|
+
const user = JSON.parse(selectUsers.value[0].data)
|
|
419
|
+
const selectNodeInfo = packageSelectResult(user, containBranch.value)
|
|
420
|
+
emits('close', selectNodeInfo)
|
|
421
|
+
}
|
|
422
|
+
}
|
|
369
423
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
424
|
+
function filterAppendNodes() {
|
|
425
|
+
if (searchParam.value.searchValue) {
|
|
426
|
+
searchParam.value.searchValue = searchParam.value.searchValue.trim()
|
|
427
|
+
searchParam.value.departmentInfo = props.branchInfo
|
|
428
|
+
window['$vueApp'].config.globalProperties.$http
|
|
429
|
+
.post(
|
|
430
|
+
window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/search-users-mobile',
|
|
431
|
+
searchParam.value
|
|
432
|
+
)
|
|
433
|
+
.then((result) => {
|
|
375
434
|
if (result) {
|
|
376
435
|
if (result.length === 0) {
|
|
377
436
|
ElMessage({
|
|
378
437
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
379
|
-
type: 'warning'
|
|
438
|
+
type: 'warning'
|
|
380
439
|
})
|
|
381
440
|
}
|
|
382
441
|
departments.value = result
|
|
383
442
|
} else {
|
|
384
443
|
ElMessage({
|
|
385
444
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
386
|
-
type: 'warning'
|
|
445
|
+
type: 'warning'
|
|
387
446
|
})
|
|
388
447
|
}
|
|
389
448
|
})
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
449
|
+
} else {
|
|
450
|
+
getTenantChildrenDept()
|
|
451
|
+
}
|
|
393
452
|
}
|
|
394
|
-
</script>
|
|
453
|
+
</script>
|