@lambo-design/workflow-approve 1.0.0-beta.5 → 1.0.0-beta.50

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.
@@ -1,351 +1,563 @@
1
- <template>
2
- <div>
3
- <Modal v-model="modalBoxShow" width="1217" title="选择办理人" @on-ok="onOk" @on-cancel="onCancel" loading>
4
- <div class="org-info">
5
- <div class="org-tree">
6
- <Tree :data="treeData" :load-data="loadData" @on-select-change="selectChange" > </Tree>
7
- </div>
8
- <div class="org-detil">
9
- <LamboPagingTable ref="selection" :dataUrl="dataUrl" :columns="tableColumn" :searchParams="tableSearchParams"
10
- @on-selection-change="onSelectionChange">
11
- <div slot="search">
12
- <Form :label-width="80">
13
- <FormItem label="账号">
14
- <Input v-model="form.userId" placeholder="按账号搜索" />
15
- </FormItem>
16
- <FormItem label="姓名">
17
- <Input v-model="form.userName" placeholder="按姓名搜索" />
18
- </FormItem>
19
- <FormItem label="是否管理员" prop="isAdmin" :labelWidth="100">
20
- <RadioGroup v-model="form.isAdmin">
21
- <Radio label="">全部</Radio>
22
- <Radio label="1">是</Radio>
23
- <Radio label="0">否</Radio>
24
- </RadioGroup>
25
- </FormItem>
26
- <FormItem>
27
- <Button type="primary" icon="ios-search" @click="doSearch">查询</Button>
28
- </FormItem>
29
- </Form>
30
- </div>
31
- </LamboPagingTable>
32
-
33
- </div>
34
- </div>
35
-
36
-
37
- </Modal>
38
- </div>
39
- </template>
40
-
41
- <script>
42
- import ajax from "@lambo-design/shared/utils/ajax";
43
- import LamboPagingTable from '@lambo-design/paging-table'
44
-
45
- export default {
46
- name: "UserHelpBox",
47
- components: {
48
- LamboPagingTable
49
- },
50
- props: {
51
- data: {
52
- type: Object,
53
- default: () => {
54
- return {}
55
- }
56
- },
57
- //按钮执行完毕回调方法
58
- executionCompleted: {
59
- type: Function,
60
- required: false,
61
- },
62
- smartFlowServerContext: {
63
- type: String,
64
- default: '/api/smart-flow-server',
65
- },
66
- upmsServerContext: {
67
- type: String,
68
- default: '/api/upms-server',
69
- },
70
- },
71
- data() {
72
- return {
73
- loading: false,
74
- modalBoxShow: false,
75
- dataUrl:'',
76
- helpBoxColumns: [
77
- {
78
- title: "用户ID",
79
- key: "userId",
80
- sortable: "custom",
81
- },
82
- {
83
- title: "用户姓名",
84
- key: "userName",
85
- },
86
- {
87
- title: "部门名称",
88
- key: "organName",
89
- },
90
- ],
91
- helpBoxTitle: "用户选择框",
92
- targetDomId:"",
93
- treeData: [],
94
- idSelectedArr: [],
95
- currentNode: {},
96
- form: {
97
- userId: '',
98
- userName: '',
99
- organId: '',
100
- organTitle: '',
101
- directChild: false,
102
- isAdmin: ''
103
- },
104
- tableSearchParams: {},
105
- };
106
- },
107
- created () {
108
- this.init()
109
- },
110
- computed: {
111
-
112
- tableColumn () {
113
- let columns = []
114
- let self = this
115
- columns.push({
116
- title: '#',
117
- key: 'selectId',
118
- type: 'selection',
119
- align: 'center',
120
- width: 55
121
- })
122
- columns.push({
123
- title: '账号',
124
- key: 'userId',
125
- sortField: 'user_id',
126
- sortable: 'custom'
127
- })
128
- columns.push({
129
- title: '姓名',
130
- key: 'userName',
131
- sortField: 'user_name',
132
- sortable: 'custom'
133
- })
134
- columns.push({
135
- title: '部门名称',
136
- key: 'organName',
137
- sortField: 'organ_name',
138
- sortable: 'custom'
139
- })
140
- columns.push({
141
- title: '状态',
142
- key: 'status',
143
- sortable: 'custom',
144
- align: 'center',
145
- width: 100,
146
- render: function (h, param) {
147
- let state = param.row.status
148
- if (state === '00') {
149
- state = '正常'
150
- } else {
151
- state = '锁定'
152
- }
153
- return h('span', state)
154
- }
155
- })
156
-
157
- return columns
158
- }
159
- },
160
- inject: ['toBeDoneListDoSearch'],
161
- methods: {
162
- init () {
163
- let self = this
164
- self.getRootData()
165
- },
166
- toggleShowHelpBox() {
167
- this.modalBoxShow = !this.modalBoxShow;
168
- },
169
-
170
- onOk(){
171
- let self = this
172
- let idSelectedArr = self.idSelectedArr
173
- self.loading = true
174
- if (idSelectedArr.length > 1) {
175
- self.loading = false
176
- self.$Message.info('办理人只能选择一条记录!')
177
- this.$emit('update-selected', ''); // 触发事件并传递 userId
178
- } else {
179
- self.data.selectedUserId=self.idSelectedArr[0];
180
- console.log("self.data:",self.data);
181
- let url = this.smartFlowServerContext + '/manage/processTodo/audit'
182
- ajax.post(url, self.data).then(function (resp) {
183
- let result = resp.data
184
- if (result.code == '200') {
185
- self.loading = false
186
- self.$Message.success(result.message);
187
- if (this.executionCompleted) {
188
- //后端没有返回数据
189
- this.executionCompleted(true, null, null);
190
- }
191
- self.toBeDoneListDoSearch();
192
- } else {
193
- self.loading = false
194
- self.$Message.error(result.message)
195
- if (this.executionCompleted) {
196
- this.executionCompleted(false, null, null);
197
- }
198
- }
199
- })
200
- }
201
- this.modalBoxShow = false;
202
- this.$router.push('/process/toBeDone/list')
203
- },
204
-
205
-
206
- doSearch: function () {
207
- this.tableSearchParams = Object.assign({}, this.form)
208
- },
209
- onSelectionChange: function (selection) {
210
- let self = this
211
- self.idSelectedArr = []
212
- if (selection.length > 1) {
213
- self.$Message.info('只能选择一条记录!')
214
- this.$refs.selection.selectAll(false);
215
- }
216
- for (let item of selection) {
217
- self.idSelectedArr.push(item.userId)
218
- }
219
- },
220
- loadData (node, callback) {
221
- this.getData(node, function (data) {
222
- if (data.length > 0) {
223
- callback(data)
224
- }
225
- })
226
- },
227
- getRootData () {
228
- let self = this
229
- let childs = []
230
- ajax.get(this.upmsServerContext + '/manage/ucOrgan/getOrgRootTree').then(function (resp) {
231
- if (resp.data.code === 1) {
232
- let data = resp.data.data
233
- if (data.length > 0) {
234
- data.forEach(item => {
235
- let obj = {}
236
- obj.type = item.organType
237
- obj.id = item.organId
238
- obj.orders = item.orders
239
- obj.title = item.organName
240
- obj.name = item.organName
241
- obj.com = item.com
242
- obj.code = item.organCode
243
- obj.loading = false
244
- obj.children = []
245
- obj.hasChild = true
246
- childs.push(obj)
247
- })
248
-
249
- childs[0].selected = true
250
- self.selectChange(childs)
251
- }
252
- self.treeData = childs
253
- }
254
- })
255
- },
256
- getData (node, callback) {
257
- let self = this
258
- ajax.get(this.upmsServerContext + '/manage/ucOrgan/getOrgSubNodes', {
259
- params: {
260
- organCode: node.code
261
- }
262
- }).then(function (resp) {
263
- const childs = []
264
- if (resp.data.code === 1) {
265
- let nodeDatas = resp.data.data
266
- if (nodeDatas.length > 0) {
267
- nodeDatas.forEach(item => {
268
- let obj = {}
269
- obj.type = item.organType
270
- obj.id = item.organId
271
- obj.orders = item.orders
272
- obj.title = item.organName
273
- obj.name = item.organName
274
- obj.com = item.com
275
- obj.parent = node
276
- obj.code = item.organCode
277
- obj.loading = false
278
- obj.children = []
279
- obj.hasChild = true
280
- childs.push(obj)
281
- })
282
- } else {
283
- self.$set(node, 'hasChild', false)
284
- self.$delete(node, 'loading')
285
- }
286
- if (callback) {
287
- callback(childs)
288
- }
289
- } else {
290
- self.$set(node, 'hasChild', false)
291
- self.$delete(node, 'loading')
292
- if (callback) {
293
- callback()
294
- }
295
- }
296
- })
297
- },
298
- selectChange (node) {
299
- let self = this
300
- if (node.length > 0) {
301
- if (self.currentNode !== node[0]) {
302
- self.currentNode = node[0]
303
-
304
- self.form.organId = self.currentNode.id
305
- self.form.organTitle = self.currentNode.title
306
-
307
- self.dataUrl =this.upmsServerContext+ '/manage/user/list'
308
- self.doSearch()
309
-
310
- if (node[0].children.length <= 0) {
311
- self.getData(node[0], function (data) {
312
- self.$set(node[0], 'children', data)
313
- })
314
- }
315
- self.$set(node[0], 'expand', true)
316
- }
317
- } else {
318
- self.$set(self.currentNode, 'expand', !self.currentNode.expand)
319
- self.currentNode.selected = true
320
- }
321
- },
322
-
323
- onCancel () {
324
- this.$emit('update-selected', ''); // 触发事件并传递 userId
325
- this.modalBoxShow = false;
326
-
327
- },
328
-
329
-
330
- },
331
- };
332
- </script>
333
-
334
- <style lang="less" scope>
335
- .org-info{
336
- display: flex;
337
- .org-tree {
338
- width: 265px;
339
- min-height: 450px;
340
- border-right: 1px solid #dcdee2;
341
- }
342
-
343
- .org-detil {
344
- flex:1;
345
- min-height: 400px;
346
- min-width: 800px;
347
- padding: 0 10px 10px;
348
- margin-left: 10px;
349
- }
350
- }
351
- </style>
1
+ <template>
2
+ <div>
3
+ <Modal v-model="modalBoxShow" width="1217" title="选择办理人" @on-ok="onOk" @on-cancel="onCancel" loading>
4
+ <div class="org-info">
5
+ <div class="org-tree">
6
+ <div class="tree-content">
7
+ <div v-if="treeData.length === 0">暂无数据</div>
8
+ <Tree v-else v-for="(item,index) in treeData" :key="index" :data="item" ref="treeBM"
9
+ :load-data="loadData" @on-select-change="selectChange"></Tree>
10
+ <!-- <Tree :data="treeData" :load-data="loadData" @on-select-change="selectChange"></Tree>-->
11
+ </div>
12
+ </div>
13
+ <div class="org-detil">
14
+ <LamboPagingTable ref="selection" :dataUrl="dataUrl" :columns="tableColumn" :searchParams="tableSearchParams"
15
+ @on-selection-change="onSelectionChange">
16
+ <div slot="search">
17
+ <Form :label-width="80">
18
+ <FormItem label="账号">
19
+ <Input v-model="form.userId" placeholder="按账号搜索" />
20
+ </FormItem>
21
+ <FormItem label="姓名">
22
+ <Input v-model="form.userName" placeholder="按姓名搜索" />
23
+ </FormItem>
24
+ <FormItem label="是否管理员" prop="isAdmin" :labelWidth="100">
25
+ <RadioGroup v-model="form.isAdmin">
26
+ <Radio label="">全部</Radio>
27
+ <Radio label="1">是</Radio>
28
+ <Radio label="0">否</Radio>
29
+ </RadioGroup>
30
+ </FormItem>
31
+ <FormItem>
32
+ <Button type="primary" icon="ios-search" @click="doSearch">查询</Button>
33
+ </FormItem>
34
+ </Form>
35
+ </div>
36
+ </LamboPagingTable>
37
+
38
+ </div>
39
+ </div>
40
+
41
+
42
+ </Modal>
43
+ </div>
44
+ </template>
45
+
46
+ <script>
47
+ import ajax from "@lambo-design/shared/utils/ajax";
48
+ import LamboPagingTable from '@lambo-design/paging-table'
49
+
50
+ export default {
51
+ name: "UserHelpBox",
52
+ components: {
53
+ LamboPagingTable
54
+ },
55
+ props: {
56
+ data: {
57
+ type: Object,
58
+ default: () => {
59
+ return {}
60
+ }
61
+ },
62
+ //按钮执行完毕回调方法
63
+ executionCompleted: {
64
+ type: Function,
65
+ required: false,
66
+ },
67
+ smartFlowServerContext: {
68
+ type: String,
69
+ default: '/api/smart-flow-server',
70
+ },
71
+ upmsServerContext: {
72
+ type: String,
73
+ default: '/api/upms-server',
74
+ },
75
+ },
76
+ data() {
77
+ return {
78
+ id: '',
79
+ helpBoxType: 'transferCurTask',
80
+ ucAdapterType: 'x1',
81
+ loading: false,
82
+ organTreeType: '00',
83
+ permScope: 'all',
84
+ modalBoxShow: false,
85
+ dataUrl:'',
86
+ helpBoxColumns: [
87
+ {
88
+ title: "用户ID",
89
+ key: "userId",
90
+ sortable: "custom",
91
+ },
92
+ {
93
+ title: "用户姓名",
94
+ key: "userName",
95
+ },
96
+ {
97
+ title: "部门名称",
98
+ key: "organName",
99
+ },
100
+ ],
101
+ helpBoxTitle: "用户选择框",
102
+ targetDomId:"",
103
+ treeData: [],
104
+ idSelectedArr: [],
105
+ currentNode: {},
106
+ form: {
107
+ userId: '',
108
+ userName: '',
109
+ organId: '',
110
+ organTitle: '',
111
+ directChild: false,
112
+ isAdmin: ''
113
+ },
114
+ tableSearchParams: {},
115
+ };
116
+ },
117
+ created () {
118
+ this.getSystemConfig()
119
+ },
120
+ computed: {
121
+
122
+ tableColumn () {
123
+ let columns = []
124
+ let self = this
125
+ columns.push({
126
+ title: '#',
127
+ key: 'selectId',
128
+ type: 'selection',
129
+ align: 'center',
130
+ width: 55
131
+ })
132
+ columns.push({
133
+ title: '账号',
134
+ key: 'userId',
135
+ sortField: 'user_id',
136
+ sortable: 'custom'
137
+ })
138
+ columns.push({
139
+ title: '姓名',
140
+ key: 'userName',
141
+ sortField: 'user_name',
142
+ sortable: 'custom'
143
+ })
144
+ columns.push({
145
+ title: '部门名称',
146
+ key: 'organName',
147
+ sortField: 'organ_name',
148
+ sortable: 'custom'
149
+ })
150
+ columns.push({
151
+ title: '状态',
152
+ key: 'status',
153
+ sortable: 'custom',
154
+ align: 'center',
155
+ width: 100,
156
+ render: function (h, param) {
157
+ let state = param.row.status
158
+ if (state === '00') {
159
+ state = '正常'
160
+ } else {
161
+ state = '锁定'
162
+ }
163
+ return h('span', state)
164
+ }
165
+ })
166
+
167
+ return columns
168
+ }
169
+ },
170
+ inject: ['toBeDoneListDoSearch'],
171
+ methods: {
172
+ init (organTreeType) {
173
+ let self = this
174
+ self.organTreeType = organTreeType
175
+ self.getRootData(organTreeType)
176
+ },
177
+ clearData(){
178
+ this.idSelectedArr = []
179
+ //清除表格数据
180
+ this.doSearch()
181
+ },
182
+ toggleShowHelpBox(organTreeType, permScope, helpBoxType, id) {
183
+ this.clearData()
184
+ this.id = id
185
+ this.helpBoxType = helpBoxType
186
+ this.organTreeType = organTreeType
187
+ this.permScope = permScope
188
+ if (permScope && permScope !== 'all'){
189
+ this.getOrgTreeByProType(this.permScope, this.organTreeType)
190
+ } else {
191
+ this.permScopeList = 'all'
192
+ this.getRootData(organTreeType)
193
+ }
194
+ this.modalBoxShow = !this.modalBoxShow;
195
+ this.$forceUpdate()
196
+ },
197
+
198
+ onOk(){
199
+ let self = this
200
+ let idSelectedArr = self.idSelectedArr
201
+ self.loading = true
202
+ if (self.helpBoxType ==='addMultitaskInstance'){
203
+ idSelectedArr = [...new Set(idSelectedArr)]
204
+ const assingeeList = idSelectedArr.map(item => item.split(',')[0])
205
+ self.$emit('add-multitask-instance', assingeeList);
206
+ } else {
207
+ if (idSelectedArr.length > 1) {
208
+ self.loading = false
209
+ self.$Message.info('办理人只能选择一条记录!')
210
+ this.$emit('update-selected', ''); // 触发事件并传递 userId
211
+ } else {
212
+ let idSelectedArr = self.idSelectedArr[0].split(',')
213
+ if (self.helpBoxType === 'transferCurTask'){
214
+ let auditResult = {
215
+ code: self.data.auditResult,
216
+ name: self.data.auditResultName,
217
+ }
218
+ self.data.selectedUserId=idSelectedArr[0];
219
+ let url = this.smartFlowServerContext + '/manage/processTodo/audit'
220
+ ajax.post(url, self.data).then(function (resp) {
221
+ let result = resp.data
222
+ if (result.code == '200') {
223
+ self.loading = false
224
+ self.$Message.success(result.message);
225
+ if (self.executionCompleted) {
226
+ self.executionCompleted(true, self.data.instanceId, self.data.taskId, auditResult, self.data.taskId);
227
+ }
228
+ self.toBeDoneListDoSearch();
229
+ } else {
230
+ self.loading = false
231
+ self.$Message.error(result.message)
232
+ if (self.executionCompleted) {
233
+ self.executionCompleted(false, null, null, auditResult, self.data.taskId);
234
+ }
235
+ }
236
+ })
237
+ } else {
238
+ self.$emit('update-next-node-assignee', idSelectedArr[0], idSelectedArr[1], self.id);
239
+ }
240
+ }
241
+ }
242
+ this.modalBoxShow = false;
243
+ },
244
+
245
+ doSearch: function () {
246
+ this.tableSearchParams = Object.assign({}, this.form)
247
+ },
248
+ onSelectionChange: function (selection) {
249
+ let self = this
250
+ // self.idSelectedArr = []
251
+ if (self.helpBoxType !== 'addMultitaskInstance' && selection.length > 1) {
252
+ self.$Message.info('只能选择一条记录!')
253
+ this.$refs.selection.selectAll(false);
254
+ }
255
+ for (let item of selection) {
256
+ self.idSelectedArr.push(item.userId + ',' + item.userName)
257
+ }
258
+ },
259
+ loadData (node, callback) {
260
+ this.getData(node, function (data) {
261
+ if (data.length > 0) {
262
+ callback(data)
263
+ }
264
+ })
265
+ },
266
+ getRootData (organTreeType) {
267
+ let self = this
268
+ let hostChilds = []
269
+ if (self.ucAdapterType === 'x1'){
270
+ let parentId = organTreeType == '00' ? 'rootId' : '0'
271
+ ajax.get(self.smartFlowServerContext + '/manage/organ/getOrgSubNodes', {
272
+ params: {
273
+ code: parentId,
274
+ orgTreeType: organTreeType
275
+ }
276
+ }).then(resp => {
277
+ if (resp.data.code === 200) {
278
+ let data = resp.data.data
279
+ if (data.length > 0) {
280
+ data.forEach(item => {
281
+ let obj = {}
282
+ obj.type = item.organType
283
+ obj.id = item.id
284
+ obj.organId = item.organId
285
+ obj.orders = item.orders
286
+ obj.title = item.organName
287
+ obj.name = item.organName
288
+ obj.com = item.com
289
+ obj.code = item.organCode
290
+ obj.loading = false
291
+ obj.children = []
292
+ obj.hasChild = true
293
+ hostChilds.push(obj)
294
+ })
295
+ self.treeData.push(hostChilds)
296
+ const codesSeen = new Map();
297
+ self.treeData = self.treeData.reduce((acc, item, index) => {
298
+ if (!codesSeen.has(item.code)) {
299
+ codesSeen.set(item.code, index);
300
+ acc.push(item);
301
+ }
302
+ return acc;
303
+ }, []);
304
+ self.selectChange(self.treeData[0])
305
+ }
306
+ }
307
+ }).catch(err => {
308
+ console.log(err);
309
+ })
310
+ } else {
311
+ ajax.get(self.smartFlowServerContext + '/manage/bizorgan/getOrgRootTree?bizOrganTreeType=' + organTreeType).then(resp => {
312
+ if (resp.data.code === 200) {
313
+ let data = resp.data.data
314
+ if (data.length > 0) {
315
+ for (let i = 0; i < data.length; i++) {
316
+ {
317
+ let obj = {}
318
+ obj.type = data[i].bizOrganType
319
+ obj.id = data[i].id
320
+ obj.organId = data[i].bizOrganId
321
+ obj.orders = data[i].orders
322
+ obj.title = data[i].bizOrganName
323
+ obj.name = data[i].bizOrganName
324
+ obj.com = data[i].bizOrganId
325
+ obj.code = data[i].bizOrganCode
326
+ obj.loading = false
327
+ obj.children = []
328
+ obj.hasChild = true
329
+ hostChilds.push(obj)
330
+ self.treeData.push(hostChilds);
331
+ const codesSeen = new Map();
332
+ self.treeData = self.treeData.reduce((acc, item, index) => {
333
+ if (!codesSeen.has(item.code)) {
334
+ codesSeen.set(item.code, index);
335
+ acc.push(item);
336
+ }
337
+ return acc;
338
+ }, []);
339
+ }
340
+ }
341
+ self.selectChange(self.treeData[0])
342
+ }
343
+ }
344
+ }).catch(err => {
345
+ console.log(err);
346
+ })
347
+ }
348
+ },
349
+ async getOrgTreeByProType(permScope, organTreeType){
350
+ let self = this
351
+ let userPermScope = permScope.substring(permScope.indexOf("U:"))
352
+ userPermScope = userPermScope.substring(2, userPermScope.indexOf(","))
353
+ let permScopeTwo = userPermScope.split(';')
354
+ if (permScopeTwo.length > 0 && permScopeTwo[0]){
355
+ self.permScopeList = 'U:' + userPermScope + ','
356
+ let promises = []
357
+ for (let i = 0; i < permScopeTwo.length; i++) {
358
+ let promise = ajax.get(self.smartFlowServerContext + "/manage/user/get/" + permScopeTwo[i] + '?treeType=' + organTreeType)
359
+ .then(resp => {
360
+ if (resp.data.code === 200) {
361
+ return resp.data.data.organCode
362
+ }
363
+ })
364
+ promises.push(promise)
365
+ }
366
+ Promise.all(promises).then(async (result) => {
367
+ const uniqueResults = [...new Set(result.filter(Boolean))];
368
+ permScope = uniqueResults.join(';');
369
+ self.treeData = await this.getOrganTreeByProType(permScope, permScope, organTreeType);
370
+ self.selectChange(self.treeData[0])
371
+ })
372
+ } else {
373
+ //对于流程类型中没有规定人员范围但规定组织范围的情况
374
+ self.treeData = await this.getOrganTreeByProType(permScope, permScope.substring(2, permScope.indexOf(",")), organTreeType);
375
+ self.selectChange(self.treeData[0])
376
+ }
377
+ },
378
+ getOrganTreeByProType(row, permScope, organTreeType) {
379
+ return new Promise((resolve, reject) => {
380
+ let organTree = [];
381
+ let childsTree = [];
382
+ if (permScope && permScope.length > 0) {
383
+ let params = {
384
+ orgTreeType: organTreeType,
385
+ };
386
+ permScope = permScope.split(';');
387
+
388
+ const requests = permScope.map(perm => {
389
+ return ajax.get(self.smartFlowServerContext + '/manage/organ/get/' + perm, { params: params })
390
+ .then(resp => {
391
+ if (resp.data.code === 200) {
392
+ return resp.data.data;
393
+ } else {
394
+ return [];
395
+ }
396
+ })
397
+ .catch(err => {
398
+ console.error(err);
399
+ return [];
400
+ });
401
+ });
402
+
403
+ Promise.all(requests)
404
+ .then(results => {
405
+ results.forEach(data => {
406
+ if (data && data.organCode) {
407
+ let obj = {
408
+ type: data.organType,
409
+ id: data.id,
410
+ organId: data.organId,
411
+ orders: data.orders,
412
+ title: data.organName,
413
+ name: data.organName,
414
+ com: data.organId,
415
+ code: data.organCode,
416
+ loading: false,
417
+ checked: false,
418
+ children: [],
419
+ hasChild: true,
420
+ };
421
+ childsTree.push(obj);
422
+ }
423
+ });
424
+
425
+ organTree.push(childsTree);
426
+ const codesSeen = new Map();
427
+ organTree = organTree.reduce((acc, item, index) => {
428
+ if (!codesSeen.has(item.code)) {
429
+ codesSeen.set(item.code, index);
430
+ acc.push(item);
431
+ }
432
+ return acc;
433
+ }, []);
434
+ resolve(organTree);
435
+ })
436
+ .catch(err => {
437
+ reject(err);
438
+ });
439
+ } else {
440
+ resolve([]);
441
+ }
442
+ });
443
+ },
444
+ getData (node, callback) {
445
+ let self = this
446
+ ajax.get(this.upmsServerContext + '/manage/ucOrgan/getOrgSubNodes', {
447
+ params: {
448
+ organCode: node.code,
449
+ orgTreeType: self.organTreeType
450
+ }
451
+ }).then(function (resp) {
452
+ const childs = []
453
+ if (resp.data.code === 1) {
454
+ let nodeDatas = resp.data.data
455
+ if (nodeDatas && nodeDatas.length > 0) {
456
+ nodeDatas.forEach(item => {
457
+ let obj = {}
458
+ obj.type = item.organType
459
+ obj.id = item.id
460
+ obj.organId = item.organId
461
+ obj.orders = item.orders
462
+ obj.title = item.organName
463
+ obj.name = item.organName
464
+ obj.com = item.com
465
+ obj.parent = node
466
+ obj.code = item.organCode
467
+ obj.loading = false
468
+ obj.children = []
469
+ obj.hasChild = true
470
+ childs.push(obj)
471
+ })
472
+ } else {
473
+ self.$set(node, 'hasChild', false)
474
+ self.$delete(node, 'loading')
475
+ }
476
+ if (callback) {
477
+ callback(childs)
478
+ }
479
+ } else {
480
+ self.$set(node, 'hasChild', false)
481
+ self.$delete(node, 'loading')
482
+ if (callback) {
483
+ callback()
484
+ }
485
+ }
486
+ })
487
+ },
488
+ selectChange (node) {
489
+ let self = this
490
+ if (node && node.length > 0) {
491
+ if (self.currentNode !== node[0]) {
492
+ self.currentNode = node[0]
493
+
494
+ self.form.organId = self.currentNode.organId
495
+ self.form.organTitle = self.currentNode.title
496
+
497
+ let permScopeList = self.permScopeList
498
+ if (permScopeList !== 'all'){
499
+ permScopeList += 'O:' + self.currentNode.code
500
+ }
501
+ self.dataUrl =self.smartFlowServerContext+ '/manage/user/getAssigneeList?orgTreeType=' + self.organTreeType + "&permScopeList=" + permScopeList
502
+ self.doSearch()
503
+
504
+ if (node[0].children.length <= 0) {
505
+ self.getData(node[0], function (data) {
506
+ self.$set(node[0], 'children', data)
507
+ })
508
+ }
509
+ self.$set(node[0], 'expand', true)
510
+ }
511
+ } else {
512
+ self.$set(self.currentNode, 'expand', !self.currentNode.expand)
513
+ self.currentNode.selected = true
514
+ }
515
+ },
516
+
517
+ onCancel () {
518
+ if (this.helpBoxType === 'transferCurTask'){
519
+ this.$emit('update-selected', ''); // 触发事件并传递 userId
520
+ }
521
+ this.modalBoxShow = false;
522
+
523
+ },
524
+
525
+ getSystemConfig(){
526
+ const self = this
527
+ ajax.get(self.smartFlowServerContext + '/anon/systemConfig/getSystemConfig').then(function (resp) {
528
+ const result = resp.data;
529
+ if (result && result.code === '200') {
530
+ self.ucAdapterType = result.data.ucAdapterType
531
+ }
532
+ }).catch(err => {
533
+ console.log(err);
534
+ })
535
+ },
536
+
537
+ },
538
+ };
539
+ </script>
540
+
541
+ <style lang="less" scope>
542
+ .org-info{
543
+ display: flex;
544
+ max-height: 700px;
545
+ .org-tree {
546
+ width: 265px;
547
+ min-height: 450px;
548
+ border-right: 1px solid #dcdee2;
549
+ .tree-content {
550
+ height: 100%;
551
+ overflow-y: auto;
552
+ }
553
+ }
554
+
555
+ .org-detil {
556
+ flex:1;
557
+ min-height: 400px;
558
+ min-width: 800px;
559
+ padding: 0 10px 10px;
560
+ margin-left: 10px;
561
+ }
562
+ }
563
+ </style>