agilebuilder-ui 1.1.36-sit5 → 1.1.36-tmp1
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-dff6f99e.js → 401-c55bdcf2.js} +1 -1
- package/lib/{404-1062cf9d.js → 404-c1dbd5e1.js} +1 -1
- package/lib/{iframe-page-e229c419.js → iframe-page-917912ae.js} +1 -1
- package/lib/{index-09cd1ad3.js → index-6ec53ef7.js} +12676 -12738
- 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-0c3b2101.js → tab-content-iframe-index-46a76242.js} +1 -1
- package/lib/{tab-content-index-dcdefb56.js → tab-content-index-132379e6.js} +1 -1
- package/lib/{tache-subprocess-history-06b435b8.js → tache-subprocess-history-384455d6.js} +1 -1
- package/package.json +1 -1
- package/packages/department-tree/src/department-tree.vue +123 -130
- package/packages/department-tree-inline/src/department-multi-tree-inline.vue +466 -435
- package/packages/department-tree-inline/src/department-single-tree-inline.vue +342 -335
- package/packages/department-tree-inline/src/department-tree-inline.vue +11 -18
- package/packages/department-tree-inline/src/department-tree-service.js +11 -10
- package/packages/department-tree-mobile/src/department-tree-app.vue +75 -103
- package/packages/department-tree-mobile/src/department-tree-inline-app.vue +225 -256
- package/packages/department-tree-mobile/src/department-tree-service.ts +75 -98
- package/packages/department-user-tree/src/department-user-multiple-tree.vue +115 -112
- package/packages/department-user-tree/src/department-user-single-tree.vue +88 -85
- package/packages/department-user-tree/src/department-user-tree.vue +119 -127
- package/packages/department-user-tree-inline/src/department-user-multiple-tree-inline.vue +1 -6
- package/packages/department-user-tree-inline/src/department-user-single-tree-inline.vue +0 -5
- package/packages/department-user-tree-inline/src/department-user-tree-inline.vue +11 -18
- package/packages/department-user-tree-inline/src/department-user-tree-multi-service.js +51 -26
- package/packages/department-user-tree-inline/src/department-user-tree-single-service.js +45 -25
- package/packages/department-user-tree-inline/src/group-user/group-list.vue +90 -97
- package/packages/department-user-tree-inline/src/group-user/group-user.vue +32 -28
- package/packages/department-user-tree-mobile/src/department-user-tree-app.vue +75 -103
- package/packages/department-user-tree-mobile/src/department-user-tree-inline-app.vue +224 -282
- package/packages/department-user-tree-mobile/src/department-user-tree-service.ts +51 -58
- package/packages/fs-preview/src/fs-preview.vue +2 -20
- package/packages/fs-upload-list/src/fs-upload-list.vue +7 -30
- 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 +15 -27
- package/packages/index.js +4 -4
- package/packages/organization-input/src/organization-input.vue +12 -34
- package/packages/super-grid/src/apis.js +4 -21
- package/packages/super-grid/src/dynamic-input.vue +13 -58
- package/packages/super-grid/src/normal-column-content.vue +1 -2
- package/packages/super-grid/src/row-operation.vue +13 -23
- package/packages/super-grid/src/super-grid.vue +42 -51
- package/packages/super-grid/src/utils.js +8 -13
- package/packages/super-icon/src/index.vue +1 -4
- package/packages/workgroup-tree/src/workgroup-tree.vue +110 -117
- package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +1 -6
- package/packages/workgroup-tree-mobile/src/workgroup-tree-app.vue +75 -103
- package/packages/workgroup-tree-mobile/src/workgroup-tree-inline-app.vue +208 -229
- package/src/api/sso-service.js +5 -6
- package/src/directives/permission/index.js +4 -4
- package/src/index.js +3 -38
- package/src/store/modules/table.js +1 -0
- package/src/styles/theme/dark-blue/sidebar.scss +0 -9
- package/src/styles/theme/gray/sidebar.scss +8 -9
- package/src/styles/theme/green/sidebar.scss +0 -10
- package/src/styles/theme/ocean-blue/sidebar.scss +0 -9
- package/src/styles/theme/tiffany-blue-mobile/sidebar.scss +0 -9
- package/src/utils/insert_css.js +1 -1
- package/src/utils/util.js +0 -19
- package/src/views/dsc-component/Sidebar/SidebarItem.vue +2 -2
- package/src/views/dsc-component/Sidebar/index.vue +18 -36
- package/src/views/layout/components/Menubar/Item.vue +9 -0
- package/src/views/layout/components/Menubar/SidebarItem.vue +2 -2
- package/src/views/layout/components/Sidebar/Item.vue +1 -4
- package/src/views/layout/components/Sidebar/SidebarItem.vue +2 -2
- package/vite.config.js +1 -1
|
@@ -2,174 +2,122 @@
|
|
|
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%;
|
|
8
|
-
<el-checkbox
|
|
9
|
-
v-if="multiple"
|
|
10
|
-
v-model="checkAll"
|
|
11
|
-
:label="$t('departmentTreeInline.allCheck')"
|
|
12
|
-
value="all"
|
|
13
|
-
@change="changeAllCheck"
|
|
14
|
-
/>
|
|
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" />
|
|
15
9
|
</div>
|
|
16
|
-
<div style="flex: 0 0 80%;
|
|
17
|
-
<el-input
|
|
18
|
-
|
|
19
|
-
|
|
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>
|
|
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>
|
|
27
14
|
</template>
|
|
28
15
|
</el-input>
|
|
29
16
|
</div>
|
|
30
17
|
</div>
|
|
31
|
-
|
|
18
|
+
</el-col>
|
|
32
19
|
</el-row>
|
|
33
20
|
</el-card>
|
|
34
|
-
<el-card
|
|
21
|
+
<el-card v-if="tenantName" class="card-content">
|
|
35
22
|
<el-row class="item-row item-row-all">
|
|
36
|
-
<el-col class="item-label dept-path"
|
|
37
|
-
><deptPath :tenantName="tenantName" :clickDepts="clickDepts" @clickBreadcrumb="clickBreadcrumb"
|
|
38
|
-
/></el-col>
|
|
23
|
+
<el-col class="item-label dept-path"><deptPath :tenantName="tenantName" :clickDepts="clickDepts" @clickBreadcrumb="clickBreadcrumb"/></el-col>
|
|
39
24
|
</el-row>
|
|
40
25
|
</el-card>
|
|
41
|
-
<el-card class="card-content org-tree" style="overflow: auto">
|
|
26
|
+
<el-card class="card-content org-tree" style="overflow: auto;">
|
|
42
27
|
<el-tree
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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>
|
|
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.showName }}<span v-if="data.parentNodeId !== '-1' && getDeptNamePath(data)" style="color:#999">({{ getDeptNamePath(data) }})</span></div>
|
|
43
|
+
<div v-if="!data.nodeType || data.nodeType !== 'USER'" class="item-side" @click="loadChildren(data,false)">
|
|
44
|
+
<el-icon><ArrowRight /></el-icon>
|
|
69
45
|
</div>
|
|
70
|
-
</template>
|
|
71
|
-
</el-tree>
|
|
72
|
-
</el-card>
|
|
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
46
|
</div>
|
|
47
|
+
</template>
|
|
48
|
+
</el-tree>
|
|
49
|
+
</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
|
+
|
|
107
65
|
</div>
|
|
66
|
+
<div class="button-area">
|
|
67
|
+
<el-button size="large" type="primary" @click="saveDept">{{$t('imatrixUIPublicModel.sure')}}</el-button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
108
70
|
</el-card>
|
|
109
|
-
<deptResult ref="deptResultRef" :selectUsers="selectUsers.concat(selectDepts)" @removeResult="removeResultDept"
|
|
71
|
+
<deptResult ref="deptResultRef" :selectUsers="selectUsers.concat(selectDepts)" @removeResult="removeResultDept"/>
|
|
110
72
|
</div>
|
|
111
73
|
</template>
|
|
112
74
|
|
|
113
|
-
<script
|
|
114
|
-
import { reactive,
|
|
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'
|
|
75
|
+
<script setup lang="ts">
|
|
76
|
+
import { reactive,ref,onMounted, defineEmits,Ref } from 'vue'
|
|
123
77
|
import {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
} from '../../utils/organization.ts'
|
|
78
|
+
ArrowRight,
|
|
79
|
+
Search,
|
|
80
|
+
ArrowUpBold
|
|
81
|
+
} from '@element-plus/icons-vue'
|
|
82
|
+
import {getTenant, getTenantChildren, checkedDeptDefault, loadDepartment, getUserInDepartments} from './department-user-tree-service.ts'
|
|
83
|
+
import {resizeScrollTargetHeightUtil, getUserMainDeptName, getDeptNamePath,initSelectUsers, addSelectedUserInfo, packageSelectResult} from '../../utils/organization.ts'
|
|
131
84
|
import deptPath from './dept-path.vue'
|
|
132
85
|
import deptResult from './dept-result.vue'
|
|
133
|
-
import {
|
|
134
|
-
import {
|
|
86
|
+
import {ElMessage} from 'element-plus'
|
|
87
|
+
import {useI18n} from "vue-i18n"
|
|
135
88
|
const props = defineProps<{
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
type: String
|
|
164
|
-
default: 'code'
|
|
165
|
-
}
|
|
166
|
-
}>()
|
|
167
|
-
const emits = defineEmits(['close'])
|
|
89
|
+
// 是否是多选树,默认是true
|
|
90
|
+
multiple: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: true,
|
|
93
|
+
},
|
|
94
|
+
// 显示指定部门节点及其子节点,不传该属性,表示显示整个组织结构树
|
|
95
|
+
departmentInfo: {
|
|
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"])
|
|
168
116
|
const orgTreeRef = ref(null)
|
|
169
117
|
let tenantInfo = ref(null)
|
|
170
118
|
let containBranch = ref(false)
|
|
171
119
|
let tenantName = ref(null)
|
|
172
|
-
let tenantNodeId =
|
|
120
|
+
let tenantNodeId = "-1"
|
|
173
121
|
let departments = ref([])
|
|
174
122
|
let checkedKeys = ref([])
|
|
175
123
|
let selectUsers = ref([])
|
|
@@ -177,7 +125,7 @@ let selectDepts = ref([])
|
|
|
177
125
|
let selectDeptNodeIds = ref([])
|
|
178
126
|
let clickDepts = ref([])
|
|
179
127
|
let defaultCheckedKeys = ref([])
|
|
180
|
-
let deptResultRef:
|
|
128
|
+
let deptResultRef:Ref<any> = ref(null)
|
|
181
129
|
let checkAll = ref(false)
|
|
182
130
|
let searchParam = ref({
|
|
183
131
|
userField: 'name',
|
|
@@ -186,19 +134,20 @@ let searchParam = ref({
|
|
|
186
134
|
departmentInfo: null
|
|
187
135
|
})
|
|
188
136
|
let defaultProps = ref({
|
|
189
|
-
|
|
137
|
+
disabled: 'disable'
|
|
138
|
+
|
|
190
139
|
})
|
|
191
140
|
let loading = ref(false)
|
|
192
|
-
const {
|
|
193
|
-
onMounted(()
|
|
194
|
-
initSelectUsers(props.searchField, props.selectUserInfo, props.separator).then((departments)
|
|
141
|
+
const {t} = useI18n()
|
|
142
|
+
onMounted(()=>{
|
|
143
|
+
initSelectUsers(props.searchField, props.selectUserInfo, props.separator ).then((departments)=>{
|
|
195
144
|
selectUsers.value = departments
|
|
196
145
|
getTenantInfo()
|
|
197
146
|
})
|
|
198
147
|
resizeScrollTargetHeight()
|
|
199
148
|
})
|
|
200
149
|
function getTenantInfo() {
|
|
201
|
-
getTenant().then(
|
|
150
|
+
getTenant().then(data=>{
|
|
202
151
|
const tenantData = data[0].data
|
|
203
152
|
tenantInfo.value = JSON.parse(tenantData)
|
|
204
153
|
containBranch.value = data[0].containBranch
|
|
@@ -208,59 +157,59 @@ function getTenantInfo() {
|
|
|
208
157
|
}
|
|
209
158
|
|
|
210
159
|
function getTenantChildrenDept() {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
160
|
+
getTenantChildren(props.departmentInfo, tenantNodeId).then(children=>{
|
|
161
|
+
departments.value = children
|
|
162
|
+
checkedDeptDefault(selectUsers.value, defaultCheckedKeys.value)
|
|
163
|
+
})
|
|
215
164
|
}
|
|
216
165
|
|
|
217
|
-
function
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
166
|
+
function resizeScrollTargetHeight () {
|
|
167
|
+
const scrollTarget = document.querySelector('.org-tree')
|
|
168
|
+
let height = resizeScrollTargetHeightUtil(scrollTarget)
|
|
169
|
+
const titleArea = 110
|
|
170
|
+
const deptPathArea = 60
|
|
171
|
+
const allCheckArea = 60
|
|
172
|
+
const buttonArea = 60
|
|
173
|
+
height = height - titleArea - deptPathArea - allCheckArea - buttonArea
|
|
174
|
+
scrollTarget['style'].height = height + 'px'
|
|
175
|
+
scrollTarget['style'].minHeight = '300px'
|
|
176
|
+
// scrollTarget.style.maxHeight = height + 'px'
|
|
228
177
|
}
|
|
229
178
|
// 点击复选框时处理
|
|
230
179
|
function handleCheckNode(data, check, isChildrenCheck) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
180
|
+
if(props.multiple) {
|
|
181
|
+
if(check) {
|
|
182
|
+
// 表示选择节点时
|
|
183
|
+
if(props.multiple) {
|
|
184
|
+
// 表示是复选组织树
|
|
185
|
+
addToSelectDept(data)
|
|
186
|
+
}
|
|
187
|
+
} else {
|
|
188
|
+
// 表示取消选择
|
|
189
|
+
if(props.multiple || (data.nodeType && data.nodeType === 'USER')) {
|
|
190
|
+
removeSelectDept(data)
|
|
191
|
+
}
|
|
242
192
|
}
|
|
243
193
|
}
|
|
244
|
-
}
|
|
245
194
|
}
|
|
246
195
|
|
|
247
196
|
function handleClickNode(data, node, treenode, events) {
|
|
248
|
-
if
|
|
197
|
+
if(!props.multiple && data.nodeType && data.nodeType === 'USER') {
|
|
249
198
|
selectUsers.value = [data]
|
|
250
199
|
}
|
|
251
200
|
}
|
|
252
201
|
function addToSelectDept(dept) {
|
|
253
|
-
if
|
|
202
|
+
if(dept.nodeType && dept.nodeType === 'USER') {
|
|
254
203
|
// 表示是用户
|
|
255
|
-
const filterValue = selectUsers.value.filter(
|
|
256
|
-
if
|
|
204
|
+
const filterValue = selectUsers.value.filter(item=> item.nodeId === dept.nodeId )
|
|
205
|
+
if(!filterValue || filterValue.length === 0) {
|
|
257
206
|
// 表示集合中没有该记录,需要记录到结果集合中
|
|
258
207
|
selectUsers.value.push(JSON.parse(JSON.stringify(dept)))
|
|
259
208
|
}
|
|
260
209
|
} else {
|
|
261
210
|
// 表示是部门
|
|
262
|
-
const filterValue = selectDepts.value.filter(
|
|
263
|
-
if
|
|
211
|
+
const filterValue = selectDepts.value.filter(item=> item.nodeId === dept.nodeId)
|
|
212
|
+
if(!filterValue || filterValue.length === 0) {
|
|
264
213
|
// 表示集合中没有该记录,需要记录到结果集合中
|
|
265
214
|
selectDepts.value.push(JSON.parse(JSON.stringify(dept)))
|
|
266
215
|
}
|
|
@@ -268,35 +217,35 @@ function addToSelectDept(dept) {
|
|
|
268
217
|
}
|
|
269
218
|
|
|
270
219
|
function removeSelectDept(dept) {
|
|
271
|
-
if
|
|
272
|
-
const index = selectUsers.value.findIndex(
|
|
220
|
+
if(dept.nodeType && dept.nodeType === 'USER') {
|
|
221
|
+
const index = selectUsers.value.findIndex(selectItem=> selectItem.nodeId === dept.nodeId)
|
|
273
222
|
// 删除指定元素
|
|
274
223
|
selectUsers.value.splice(index, 1)
|
|
275
224
|
} else {
|
|
276
|
-
const index = selectDepts.value.findIndex(
|
|
225
|
+
const index = selectDepts.value.findIndex(selectItem=> selectItem.nodeId === dept.nodeId)
|
|
277
226
|
// 删除指定元素
|
|
278
227
|
selectDepts.value.splice(index, 1)
|
|
279
228
|
}
|
|
280
|
-
|
|
281
|
-
|
|
229
|
+
|
|
230
|
+
checkAll.value =false
|
|
282
231
|
}
|
|
283
232
|
function changeAllCheck(value: boolean) {
|
|
284
233
|
console.log('changeCheck====value=', value)
|
|
285
|
-
if
|
|
234
|
+
if(props.multiple) {
|
|
286
235
|
// 表示是复选组织树
|
|
287
|
-
if
|
|
236
|
+
if(value){
|
|
288
237
|
// 表示全选时
|
|
289
|
-
const allNodeIds = departments.value.map((item)
|
|
290
|
-
|
|
238
|
+
const allNodeIds = departments.value.map((item)=>{
|
|
239
|
+
return item['nodeId'];
|
|
291
240
|
})
|
|
292
241
|
orgTreeRef.value.setCheckedKeys(allNodeIds, false)
|
|
293
|
-
departments.value.forEach(
|
|
242
|
+
departments.value.forEach(item=>{
|
|
294
243
|
addToSelectDept(item)
|
|
295
244
|
})
|
|
296
245
|
} else {
|
|
297
246
|
// 表示取消全选时
|
|
298
|
-
departments.value.forEach(
|
|
299
|
-
|
|
247
|
+
departments.value.forEach(item=>{
|
|
248
|
+
removeSelectDept(item)
|
|
300
249
|
})
|
|
301
250
|
orgTreeRef.value.setCheckedKeys([], false)
|
|
302
251
|
}
|
|
@@ -304,25 +253,25 @@ function changeAllCheck(value: boolean) {
|
|
|
304
253
|
}
|
|
305
254
|
|
|
306
255
|
function loadChildrenDept(dept) {
|
|
307
|
-
loadDepartment(dept.id, dept.branchId).then(
|
|
256
|
+
loadDepartment(dept.id, dept.branchId).then(children=>{
|
|
308
257
|
departments.value = children
|
|
309
|
-
checkedDeptDefault(selectUsers.value,
|
|
258
|
+
checkedDeptDefault(selectUsers.value, defaultCheckedKeys.value)
|
|
310
259
|
})
|
|
311
260
|
}
|
|
312
|
-
function
|
|
313
|
-
|
|
314
|
-
|
|
261
|
+
function loadChildren (dept, isBreadcrumb) {
|
|
262
|
+
clickDepts.value.push(dept)
|
|
263
|
+
loadChildrenDept(dept)
|
|
315
264
|
}
|
|
316
265
|
|
|
317
266
|
function clickBreadcrumb(item, isTenant, index) {
|
|
318
|
-
if
|
|
267
|
+
if(isTenant) {
|
|
319
268
|
// 表示点击的时公司节点
|
|
320
269
|
clickDepts.value = []
|
|
321
270
|
getTenantChildrenDept()
|
|
322
271
|
} else {
|
|
323
272
|
// 表示点击的是部门节点
|
|
324
273
|
// 删除指定元素
|
|
325
|
-
clickDepts.value.splice(index
|
|
274
|
+
clickDepts.value.splice(index+1, clickDepts.value.length - (index + 1) )
|
|
326
275
|
loadChildrenDept(item)
|
|
327
276
|
}
|
|
328
277
|
}
|
|
@@ -332,17 +281,17 @@ function showResult() {
|
|
|
332
281
|
}
|
|
333
282
|
|
|
334
283
|
function removeResultDept(dept) {
|
|
335
|
-
const removeDeptInDepts = departments.value.filter(
|
|
336
|
-
if
|
|
284
|
+
const removeDeptInDepts = departments.value.filter(item=>item.nodeId === dept.nodeId)
|
|
285
|
+
if(removeDeptInDepts && removeDeptInDepts.length > 0) {
|
|
337
286
|
// departments结果存在当前移除的节点时,check-change事件会走removeSelectDept的逻辑
|
|
338
287
|
const selectNodeIds = []
|
|
339
|
-
selectUsers.value.forEach(
|
|
340
|
-
if
|
|
288
|
+
selectUsers.value.forEach(item=>{
|
|
289
|
+
if(item.nodeId !== dept.nodeId) {
|
|
341
290
|
selectNodeIds.push(item.nodeId)
|
|
342
291
|
}
|
|
343
292
|
})
|
|
344
|
-
selectDepts.value.forEach(
|
|
345
|
-
if
|
|
293
|
+
selectDepts.value.forEach(item=>{
|
|
294
|
+
if(item.nodeId !== dept.nodeId) {
|
|
346
295
|
selectNodeIds.push(item.nodeId)
|
|
347
296
|
}
|
|
348
297
|
})
|
|
@@ -351,103 +300,96 @@ function removeResultDept(dept) {
|
|
|
351
300
|
removeSelectDept(dept)
|
|
352
301
|
}
|
|
353
302
|
|
|
354
|
-
function saveDept() {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
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)
|
|
303
|
+
function saveDept () {
|
|
304
|
+
if (selectDepts.value.length === 0 && selectUsers.value.length === 0 ) {
|
|
305
|
+
ElMessage({
|
|
306
|
+
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
307
|
+
type: 'warning',
|
|
391
308
|
})
|
|
392
|
-
|
|
393
|
-
|
|
309
|
+
return
|
|
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
|
|
394
355
|
if (selectNodeInfo.userIds.length > 0) {
|
|
395
356
|
emits('close', selectNodeInfo)
|
|
396
357
|
} else {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
358
|
+
ElMessage({
|
|
359
|
+
message: t('imatrixUIMessage.pleaseSelectPersonnel'),
|
|
360
|
+
type: 'warning',
|
|
361
|
+
})
|
|
401
362
|
}
|
|
402
|
-
}
|
|
403
|
-
.catch(() => {
|
|
404
|
-
loading.value = false
|
|
405
|
-
})
|
|
406
|
-
} else {
|
|
407
|
-
loading.value = false
|
|
408
|
-
if (selectNodeInfo.userIds.length > 0) {
|
|
409
|
-
emits('close', selectNodeInfo)
|
|
363
|
+
}
|
|
410
364
|
} else {
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
})
|
|
365
|
+
const user = JSON.parse(selectUsers.value[0].data)
|
|
366
|
+
const selectNodeInfo = packageSelectResult(user, containBranch.value)
|
|
367
|
+
emits('close', selectNodeInfo)
|
|
415
368
|
}
|
|
416
369
|
}
|
|
417
|
-
} else {
|
|
418
|
-
const user = JSON.parse(selectUsers.value[0].data)
|
|
419
|
-
const selectNodeInfo = packageSelectResult(user, containBranch.value)
|
|
420
|
-
emits('close', selectNodeInfo)
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
370
|
|
|
424
|
-
function filterAppendNodes() {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
.post(
|
|
430
|
-
window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/search-users-mobile',
|
|
431
|
-
searchParam.value
|
|
432
|
-
)
|
|
433
|
-
.then((result) => {
|
|
371
|
+
function filterAppendNodes ( ) {
|
|
372
|
+
if (searchParam.value.searchValue) {
|
|
373
|
+
searchParam.value.searchValue = searchParam.value.searchValue.trim()
|
|
374
|
+
searchParam.value.departmentInfo = props.departmentInfo
|
|
375
|
+
window['$vueApp'].config.globalProperties.$http.post(window['$vueApp'].config.globalProperties.baseAPI + '/component/organization-trees/search-users-mobile', searchParam.value).then(result => {
|
|
434
376
|
if (result) {
|
|
435
377
|
if (result.length === 0) {
|
|
436
378
|
ElMessage({
|
|
437
379
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
438
|
-
type: 'warning'
|
|
380
|
+
type: 'warning',
|
|
439
381
|
})
|
|
440
382
|
}
|
|
441
383
|
departments.value = result
|
|
442
384
|
} else {
|
|
443
385
|
ElMessage({
|
|
444
386
|
message: t('imatrixUIMessage.queryResultIsEmpty'),
|
|
445
|
-
type: 'warning'
|
|
387
|
+
type: 'warning',
|
|
446
388
|
})
|
|
447
389
|
}
|
|
448
390
|
})
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
391
|
+
} else {
|
|
392
|
+
getTenantChildrenDept()
|
|
393
|
+
}
|
|
452
394
|
}
|
|
453
|
-
</script>
|
|
395
|
+
</script>
|