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.
Files changed (58) hide show
  1. package/lib/{401-64e37702.js → 401-aaa4054d.js} +1 -1
  2. package/lib/{404-7d89180e.js → 404-ef3b10e9.js} +1 -1
  3. package/lib/{iframe-page-4c8bc1d5.js → iframe-page-28c30283.js} +1 -1
  4. package/lib/{index-5c1112e8.js → index-bece2c1c.js} +19139 -19078
  5. package/lib/super-ui.css +1 -1
  6. package/lib/super-ui.js +1 -1
  7. package/lib/super-ui.umd.cjs +99 -99
  8. package/lib/{tab-content-iframe-index-0a36be80.js → tab-content-iframe-index-87ac3b2b.js} +1 -1
  9. package/lib/{tab-content-index-9a271908.js → tab-content-index-956a0533.js} +1 -1
  10. package/lib/{tache-subprocess-history-93d013b2.js → tache-subprocess-history-2c4f98f2.js} +1 -1
  11. package/package.json +1 -1
  12. package/packages/department-tree-inline/src/department-multi-tree-inline.vue +42 -34
  13. package/packages/department-tree-inline/src/department-single-tree-inline.vue +53 -42
  14. package/packages/department-tree-inline/src/department-tree-service.js +17 -11
  15. package/packages/department-tree-inline/src/search-result.vue +187 -219
  16. package/packages/department-tree-mobile/src/department-tree-inline-app.vue +17 -4
  17. package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +52 -43
  18. package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +52 -42
  19. package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +23 -13
  20. package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +9 -5
  21. package/packages/department-user-tree-inline/src/group-user-tree-service.js +17 -11
  22. package/packages/department-user-tree-inline/src/search-result.vue +207 -220
  23. package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +14 -3
  24. package/packages/dynamic-source-select/src/dynamic-source-select-service.js +7 -2
  25. package/packages/empty-state/index.vue +28 -0
  26. package/packages/fs-preview/src/fs-preview.vue +10 -4
  27. package/packages/fs-upload/src/fs-upload-multi.vue +10 -6
  28. package/packages/fs-upload/src/fs-upload-single.vue +8 -7
  29. package/packages/fs-upload/src/fs-upload.vue +3 -1
  30. package/packages/fs-upload/src/see-big-picture.vue +3 -0
  31. package/packages/fs-upload-list/src/fs-upload-list.vue +2 -1
  32. package/packages/fs-upload-new/src/fs-button-upload.vue +3 -3
  33. package/packages/fs-upload-new/src/fs-drag-upload.vue +3 -3
  34. package/packages/fs-upload-new/src/fs-preview-new.vue +11 -7
  35. package/packages/multipart-upload/src/multipart-upload-form.vue +2 -1
  36. package/packages/multipart-upload/src/multipart-upload-list.vue +2 -1
  37. package/packages/plugins/export-data-new.js +2 -0
  38. package/packages/super-grid/src/components/grid-icon.vue +6 -3
  39. package/packages/super-grid/src/normal-column-content.vue +1 -1
  40. package/packages/super-grid/src/super-grid.vue +4 -4
  41. package/packages/super-grid/src/view-image-dialog.vue +2 -1
  42. package/packages/utils/utils.js +27 -9
  43. package/packages/workgroup-tree-inline/src/search-result.vue +2 -1
  44. package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +50 -41
  45. package/packages/workgroup-tree-mobile/src/workgroup-tree-inline-app.vue +16 -5
  46. package/packages/workgroup-user-tree-inline/src/search-result.vue +2 -1
  47. package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +30 -24
  48. package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +49 -37
  49. package/packages/workgroup-user-tree-mobile/src/workgroup-user-tree-inline-app.vue +281 -222
  50. package/src/i18n/langs/cn.js +3 -3
  51. package/src/i18n/langs/en.js +3 -3
  52. package/src/styles/index.scss +26 -0
  53. package/src/utils/auth.js +10 -7
  54. package/src/utils/chat-ai-util.ts +3 -3
  55. package/src/utils/common-util.js +44 -0
  56. package/src/utils/global-prop.js +17 -0
  57. package/src/views/dsc-component/Sidebar/SidebarItem.vue +6 -0
  58. 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 v-if="multiple" v-model="checkAll" :label="$t('departmentTreeInline.allCheck')" value="all" @change="changeAllCheck" />
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 v-model="searchParam.searchValue" :placeholder="$t('departmentUserTree.pleaseEnterUserInformation')" @clear="filterAppendNodes" @keyup.enter="filterAppendNodes" @blur="filterAppendNodes" clearable>
12
- <template v-slot:suffix>
13
- <el-icon @click="filterAppendNodes"><Search /></el-icon>
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
- </el-col>
31
+ </el-col>
19
32
  </el-row>
20
33
  </el-card>
21
- <el-card v-if="tenantName" class="card-content">
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"><deptPath :tenantName="tenantName" :clickDepts="clickDepts" @clickBreadcrumb="clickBreadcrumb"/></el-col>
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
- ref="orgTreeRef"
29
- :data="departments"
30
- :show-checkbox="multiple"
31
- node-key="nodeId"
32
- :props="defaultProps"
33
- :default-checked-keys="defaultCheckedKeys"
34
- @check-change="handleCheckNode"
35
- @node-click="handleClickNode"
36
- >
37
- <template #default="{ node, data }">
38
- <div class="item-row">
39
- <div v-if="data.nodeType && data.nodeType === 'USER'" class="item-label">{{ data.showName }}
40
- <span style="color:#999">({{ data.loginName }}{{ getUserMainDeptName(data) ? '/'+getUserMainDeptName(data): ''}})</span>
41
- </div>
42
- <div v-else class="item-label" @click="loadChildren(data,false)">{{ data.name }}</div>
43
- <div v-if="!data.nodeType || data.nodeType !== 'USER'" class="item-side" @click="loadChildren(data,false)">
44
- <el-icon><ArrowRight /></el-icon>
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
- </div>
47
- </template>
48
- </el-tree>
67
+ </template>
68
+ </el-tree>
49
69
  </el-card>
50
- <el-card class="card-footer">
51
- <div style="display: flex;">
52
- <div class="select-result" >
53
- <!-- 已选择:{useNum}个用户,{deptNum}个部门(含子部门) -->
54
- <!-- {{$t('departmentUserTree.selectResultInfo',{userNum: selectUsers.length, deptNum: selectDepts.length})}} -->
55
- <span v-if="multiple" @click="showResult">
56
- <span v-if="selectUsers.length > 0 && selectDepts.length > 0">{{$t('departmentTreeInline.selectResultInfoHasSelect')}}{{$t('departmentUserTree.selectUserResultInfo',{userNum: selectUsers.length })}}, {{$t('departmentUserTree.selectDeptResultInfo',{deptNum: selectDepts.length })}}</span>
57
- <span v-else-if="selectUsers.length > 0">{{$t('departmentTreeInline.selectResultInfoHasSelect')}}{{$t('departmentUserTree.selectUserResultInfo',{userNum: selectUsers.length })}}</span>
58
- <span v-else-if="selectDepts.length > 0">{{$t('departmentTreeInline.selectResultInfoHasSelect')}}{{$t('departmentUserTree.selectDeptResultInfo',{deptNum: selectDepts.length })}}</span>
59
- <span v-if="selectUsers.length > 0 || selectDepts.length > 0" style="padding-left: 10px"><el-icon><ArrowUpBold /></el-icon></span>
60
- </span>
61
- <span v-else-if="selectUsers.length > 0">
62
- {{$t('departmentTreeInline.selectResultInfoHasSelect')}}{{selectUsers[0].showName }}<span style="color:#999">({{ selectUsers[0].loginName }}{{ getUserMainDeptName(selectUsers[0]) ? '/'+getUserMainDeptName(selectUsers[0]): ''}})</span>
63
- </span>
64
-
65
- </div>
66
- <div class="button-area">
67
- <el-button size="large" type="primary" @click="saveDept">{{$t('imatrixUIPublicModel.sure')}}</el-button>
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 setup lang="ts">
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
- ArrowRight,
79
- Search,
80
- ArrowUpBold
81
- } from '@element-plus/icons-vue'
82
- import {getTenant, getTenantChildren, checkedDeptDefault, loadChildNodes, getUserInWorkgroups} from './workgroup-user-tree-service.ts'
83
- import {resizeScrollTargetHeightUtil, getUserMainDeptName, getDeptNamePath,initSelectUsers, addSelectedUserInfo, packageSelectResult} from '../../utils/organization.ts'
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 "vue-i18n"
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
- // 是否是多选树,默认是true
90
- multiple: {
91
- type: Boolean,
92
- default: true,
93
- },
94
- // 显示指定部门节点及其子节点,不传该属性,表示显示整个组织结构树
95
- branchInfo: {
96
- type: Array<any>,
97
- default: null,
98
- },
99
- // 多选用户树时,已选择用户id或登录名集合,多个之间以逗号隔开
100
- selectUserInfo: {
101
- type: [String, Number],
102
- default: null,
103
- },
104
- // 移除用户时,用户属性名称:id、loginName、email、telephone,默认是loginName
105
- searchField: {
106
- type: String,
107
- default: 'loginName',
108
- },
109
- // 多选树时结果之间的分隔符,默认是逗号分隔
110
- separator: {
111
- type: String,
112
- default: ','
113
- }
114
- }>()
115
- const emits = defineEmits(["close"])
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 = "-1"
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
- disabled: 'disable'
137
-
182
+ disabled: 'disable'
138
183
  })
139
184
  let loading = ref(false)
140
- const {t} = useI18n()
141
- onMounted(()=>{
142
- initSelectUsers(props.searchField, props.selectUserInfo, props.separator ).then((departments)=>{
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
- getTenantChildren(props.branchInfo, tenantNodeId).then(children=>{
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 resizeScrollTargetHeight () {
166
- const scrollTarget = document.querySelector('.org-tree')
167
- let height = resizeScrollTargetHeightUtil(scrollTarget)
168
- const titleArea = 110
169
- const deptPathArea = 60
170
- const allCheckArea = 60
171
- const buttonArea = 60
172
- height = height - titleArea - deptPathArea - allCheckArea - buttonArea
173
- scrollTarget['style'].height = height + 'px'
174
- scrollTarget['style'].minHeight = '300px'
175
- // scrollTarget.style.maxHeight = height + 'px'
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
- if(props.multiple) {
180
- if(check) {
181
- // 表示选择节点时
182
- if(props.multiple) {
183
- // 表示是复选组织树
184
- addToSelectDept(data)
185
- }
186
- } else {
187
- // 表示取消选择
188
- if(props.multiple || (data.nodeType && data.nodeType === 'USER')) {
189
- removeSelectDept(data)
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
- checkAll.value =false
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
- return item['nodeId'];
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
- removeSelectDept(item)
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, defaultCheckedKeys.value)
309
+ checkedDeptDefault(selectUsers.value, defaultCheckedKeys.value)
258
310
  })
259
311
  }
260
- function loadChildren (dept, isBreadcrumb) {
261
- clickDepts.value.push(dept)
262
- loadChildrenDept(dept)
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
- if (selectDepts.value.length === 0 && selectUsers.value.length === 0 ) {
304
- ElMessage({
305
- message: t('imatrixUIMessage.pleaseSelectPersonnel'),
306
- type: 'warning',
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
- return
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
- ElMessage({
358
- message: t('imatrixUIMessage.pleaseSelectPersonnel'),
359
- type: 'warning',
360
- })
397
+ ElMessage({
398
+ message: t('imatrixUIMessage.pleaseSelectPersonnel'),
399
+ type: 'warning'
400
+ })
361
401
  }
362
- }
363
- } else {
364
- const user = JSON.parse(selectUsers.value[0].data)
365
- const selectNodeInfo = packageSelectResult(user, containBranch.value)
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
- function filterAppendNodes ( ) {
371
- if (searchParam.value.searchValue) {
372
- searchParam.value.searchValue = searchParam.value.searchValue.trim()
373
- searchParam.value.departmentInfo = props.branchInfo
374
- window['$vueApp'].config.globalProperties.$http.post(window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/search-users-mobile', searchParam.value).then(result => {
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
- } else {
391
- getTenantChildrenDept()
392
- }
449
+ } else {
450
+ getTenantChildrenDept()
451
+ }
393
452
  }
394
- </script>
453
+ </script>