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