cloud-web-corejs 1.0.54-dev.345 → 1.0.54-dev.346

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,582 +1,647 @@
1
- <template>
2
- <div id="containt">
3
- <el-tabs v-model="activeName" class="tab-box">
4
- <el-tab-pane :label="$t1('常规')" name="first">
5
- <editView v-if="showEdit" visible-key="showEdit" :_dataId.sync="dataId" :parent-target="_self"
6
- @reload="$reloadHandle" :userType="userType" :flag="flag"></editView>
7
- </el-tab-pane>
8
- <el-tab-pane :label="$t1('列表')" name="second">
9
- <div class="tree-box fl">
10
- <div class="tit" @click="clearNodeClick"><b>{{ $t1('机构分类') }}</b></div>
11
- <el-tree
12
- :props="defaultProps"
13
- :load="loadNode"
14
- node-key="id"
15
- ref="tree"
16
- highlight-current
17
- lazy
18
- :expand-on-click-node="false"
19
- @node-click="handleNodeClick"
20
- class="tree-list"
21
- icon-class="el-icon-arrow-down"
22
- ></el-tree>
23
- </div>
24
- <label id="labBtn">
25
- <div class="icon">
26
- <i class="el-icon-more"></i>
27
- <i class="el-icon-more"></i>
28
- </div>
29
- </label>
30
- <div class="main-right fr" style="padding-left:6px;">
31
- <div class="grid-height">
32
- <vxe-grid
33
- id="table-m1"
34
- ref="table-m1"
35
- :auto-resize="true"
36
- v-bind="vxeOption"
37
- @resizable-change="$vxeTableUtil.onColumnWitchChange"
38
- @custom="$vxeTableUtil.customHandle"
39
- >
40
- <template #form>
41
- <tableForm :formData.sync="formData" :advancedFormData.sync="advancedFormData"
42
- @searchEvent="searchEvent" @resetEvent="resetEvent">
43
- <template #buttonLeft>
44
- <vxe-button status="primary" class="button-sty" icon="el-icon-plus" @click="openEditDialog">
45
- {{ $t1('新增') }}
46
- </vxe-button>
47
- <base-table-export :option="{ title: $t1('账户导出'), targetRef: 'table-m1'}"
48
- :parent-target="_self"/>
49
- <vxe-button status="primary" class="button-sty" icon="el-icon-download" @click="importExcel">
50
- {{ $t1('导入') }}
51
- </vxe-button>
52
- <base-input-export :option="exportOption" :parent-target="_self"/>
53
- </template>
54
- <template #buttonRight>
55
- <vxe-button icon="el-icon-brush" class="button-sty" @click="resetEvent" type="text" status="primary"
56
- plain>{{ $t1('重置') }}
57
- </vxe-button>
58
- <vxe-button status="warning" icon="el-icon-search" class="button-sty" @click="searchEvent">
59
- {{ $t1('搜索') }}
60
- </vxe-button>
61
- </template>
62
- </tableForm>
63
- </template>
64
- </vxe-grid>
65
- </div>
66
- </div>
67
- </el-tab-pane>
68
- </el-tabs>
69
- </div>
70
- </template>
71
-
72
- <script>
73
- import editView from './form_edit.vue';
74
- import {treeScollx} from '@base/utils/global.js';
75
- import tableForm from "@base/components/table/tableForm";
76
-
77
- export default {
78
- name: 'user:form_list',
79
- props: {
80
- userType: {
81
- type: Number
82
- },
83
- flag: String
84
- },
85
- components: {
86
- tableForm,
87
- editView: () => import('./edit.vue')
88
- },
89
- created() {
90
-
91
- },
92
- activated() {
93
- // this.initTableList();
94
- },
95
- async mounted() {
96
- treeScollx({target: this, type: 'default'});
97
- await this.initOutUserRoleCode();
98
- this.getRoleList();
99
- this.initTableList();
100
- },
101
- data() {
102
- return {
103
- exportOption: {
104
- prefix: USER_PREFIX,
105
- tableRef: 'table-m1',
106
- title: this.$t1('用户'),
107
- codes: ["USEREXCEL", "USERPDF", "USERPRINT", "USERHIPRINT", "USERJDPRINT", "USERPDDPRINT", "USERVIPPRINT"],
108
- onBeforePrint: (done, {etCode, etType}) => {
109
- /*etType: 2 菜鸟打印,3 网页打印,6 京东打印*/
110
- done();
111
- },
112
- onAfterPrint: ({etCode, etType}, close) => {
113
- /*etType: 2 菜鸟打印,3 网页打印,6 京东打印*/
114
- /*close();//关闭弹框*/
115
- }
116
- },
117
- printOption: {
118
- prefix: USER_PREFIX,
119
- tableRef: 'table-m1',
120
- param: {
121
- type: 'print',
122
- code: 'USERPRINT',
123
- param: 'tableDefault'
124
- }
125
- },
126
- showEdit: false,
127
- activeName: 'second',
128
- showUpload: true,
129
- uploadSize: 10,
130
- value10: '',
131
- dataId: '',
132
- tp: false,
133
- showUserDialog: false,
134
- nickName: 'dd',
135
- formData: {saleOrgName: null, roleCodes: []},
136
- vxeOption: {
137
- className: 'list-table'
138
- },
139
- defaultProps: {
140
- label: 'name', //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
141
- children: [],
142
- isLeaf: 'leaf'
143
- },
144
- showAdvancedSearch: false,
145
- advancedFormData: {},
146
- roleList: [],
147
- distributorCode: 'distributor',
148
- outUserCodes: []
149
- };
150
- },
151
- methods: {
152
- searchEvent() {
153
- this.$refs['table-m1'].commitProxy('reload');
154
- },
155
- resetEvent() {
156
- this.formData = {};
157
- this.advancedFormData = {};
158
- this.$refs.tree.setCurrentKey();
159
- this.$refs['table-m1'].commitProxy('reload');
160
- },
161
- openEditDialog(id) {
162
- this.dataId = !id || typeof id == 'object' ? 0 : id;
163
- this.activeName = 'first';
164
- this.$openEditView('showEdit');
165
- },
166
- clearNodeClick() {
167
- this.formData.saleOrgId = '';
168
- this.formData.saleOrgName = '';
169
- this.$refs.tree.setCurrentKey();
170
- this.searchEvent();
171
- },
172
- handleNodeClick(data, node, v) {
173
- this.$set(this.formData, 'saleOrgId', data.id);
174
- this.$set(this.formData, 'saleOrgName', data.name);
175
- this.$forceUpdate();
176
- this.searchEvent();
177
- },
178
- // 异步树叶子节点懒加载逻辑
179
- loadNode(node, resolve) {
180
- let id = node && node.data && node.data.id ? node.data.id || '' : '';
181
- let param = {enabled: true};
182
- let url = !id ? USER_PREFIX + '/sale_org/getAllList' : USER_PREFIX + '/sale_org/getChildren';
183
- this.$http({
184
- url: url,
185
- method: 'post',
186
- data: {
187
- parent: id,
188
- enabled: true
189
- },
190
- success: res => {
191
- res.objx.forEach(value => {
192
- value.leaf = !value.hasChild;
193
- });
194
- if (node.level === 0) {
195
- if (res.objx.length > 0 && res.objx[0].isParent) {
196
- this.$nextTick(() => {
197
- let nodedata = node.childNodes[0];
198
- nodedata.expanded = true;
199
- nodedata.loadData();
200
- });
201
- }
202
- }
203
- resolve(res.objx);
204
- }
205
- });
206
- },
207
- initTableList() {
208
- let otherColumns = [];
209
- let userType = this.userType
210
- if(userType==1){
211
-
212
- }else if(userType==2){
213
- otherColumns.push(...[
214
- {
215
- field: 'signatoryName',
216
- title: this.$t1('签约人'),
217
- width: 150
218
- },
219
- {
220
- field: 'signatoryMobile',
221
- title: this.$t1('签约人电话'),
222
- width: 150
223
- },
224
- ])
225
- }
226
- let tableOption = {
227
- vue: this,
228
- tableRef: 'table-m1',
229
- tableName: 'basic_user_list-m11',
230
- path: USER_PREFIX + '/user/listAllPage',
231
- param: () => {
232
- let formData = {
233
- ...this.formData,
234
- ...this.advancedFormData
235
- };
236
- let outUserCodes = this.outUserCodes;
237
- if (this.userType == 1) {
238
- //组织用户
239
- formData.neRoleCodes = [...outUserCodes];
240
- } else if (this.userType == 2) {
241
- //外部用户
242
- if (!formData.roleCodes || !formData.roleCodes.length) {
243
- formData.roleCodes = [...outUserCodes];
244
- }
245
- }
246
- return formData;
247
- },
248
- columns: [
249
- {
250
- type: 'checkbox',
251
- width: 48,
252
- resizable: false,
253
- fixed: 'left'
254
- },
255
- {
256
- title: this.$t1('登录名'),
257
- field: 'loginAccount',
258
- width: 250,
259
- fixed: 'left'
260
- },
261
- {
262
- field: 'nickName',
263
- title: this.$t1('姓名'),
264
- width: 150
265
- },
266
- {
267
- field: 'mobile',
268
- title: this.$t1('手机号'),
269
- width: 150
270
- },
271
- {
272
- width: 150,
273
- title: this.$t1('头像'),
274
- field: 'headPhotoUrl',
275
- sortable: false,
276
- slots: {
277
- default: ({row, rowIndex}) => {
278
- let option = {
279
- title: this.$t1('头像'),
280
- rows: row.headPhotoUrl,
281
- showViewButton: false
282
- };
283
- return [
284
- <base-attachment option={option}/>
285
- ]
286
- }
287
- }
288
- },
289
- {
290
- field: 'enabled',
291
- title: this.$t1('是否启用'),
292
- width: 150,
293
- slots: {
294
- default: ({row}) => {
295
- if (row.enabled) {
296
- return [<div class="txt-status">{this.$t1('启用')}</div>];
297
- } else {
298
- return [<div class="txt-status s-3">{this.$t1('禁用')}</div>];
299
- }
300
- }
301
- }
302
- },
303
- {
304
- field: 'roleNames',
305
- title: this.$t1('角色'),
306
- width: 150
307
- },
308
- {
309
- field: 'saleOrgNames',
310
- title: this.$t1('机构'),
311
- width: 150
312
- },
313
- {
314
- field: 'positionNames',
315
- title: this.$t1('岗位'),
316
- width: 150
317
- },
318
- {
319
- field: 'birth',
320
- title: this.$t1('出生日期'),
321
- width: 150,
322
- slots: {
323
- default: ({row}) => {
324
- var val = row.birth;
325
- if (val) {
326
- return val.substring(0, 10);
327
- }
328
- }
329
- }
330
- },
331
- {
332
- field: 'zipCode',
333
- title: this.$t1('邮编'),
334
- width: 150
335
- },
336
- {
337
- field: 'address',
338
- title: this.$t1('地址'),
339
- width: 150
340
- },
341
- {
342
- field: 'empNo',
343
- title: this.$t1('员工编码'),
344
- width: 150
345
- },
346
- {
347
- field: 'gender',
348
- title: this.$t1('性别'),
349
- width: 150,
350
- slots: {
351
- default: ({row}) => {
352
- var val = row.gender;
353
- if (val == 1) {
354
- return this.$t1('男');
355
- } else if (val == 2) {
356
- return this.$t1('女');
357
- }
358
- }
359
- }
360
- },
361
- {
362
- field: 'companyNames',
363
- title: this.$t1('所属组织'),
364
- width: 250
365
- },
366
- ...otherColumns,
367
- {
368
- field: 'createBy',
369
- title: this.$t1('创建人'),
370
- width: 150
371
- },
372
- {
373
- field: 'modifyBy',
374
- title: this.$t1('更新人'),
375
- width: 150
376
- },
377
- {
378
- field: 'modifyDate',
379
- title: this.$t1('更新时间'),
380
- width: 150
381
- },
382
- {
383
- field: 'createDate',
384
- title: this.$t1('创建时间'),
385
- width: 150
386
- },
387
- {
388
- width: 47,
389
- fixed: 'right',
390
- title: '',
391
- sortable: false,
392
- slots: {
393
- default: ({row}) => {
394
- return [
395
- <a
396
- href="javascript:void(0);"
397
- class="a-link"
398
- onclick={() => {
399
- this.openEditDialog(row.id);
400
- }}
401
- >
402
- <el-tooltip enterable={false} enterable={false} effect="dark" content={this.$t1('查看')}
403
- placement="top"
404
- popper-class="tooltip-skin">
405
- <i class="el-icon-edit"/>
406
- </el-tooltip>
407
- </a>
408
- ];
409
- }
410
- }
411
- }
412
- ],
413
- searchColumns: [
414
- {
415
- title: this.$t1('机构名称'),
416
- field: "saleOrgName",
417
- type: "input",
418
- common: true,
419
- disabled: true,
420
- defaultValueEnabled: false
421
- },
422
- {title: this.$t1('登录名'), field: "loginAccount", type: "input", common: true},
423
- {title: this.$t1('姓名'), field: "nickName", type: "input", common: true},
424
- {title: this.$t1('手机号'), field: "mobile", type: "input", common: true},
425
- {
426
- title: this.$t1('角色'),
427
- field: "roleCodes",
428
- type: "select",
429
- common: true,
430
- itemOption: [],
431
- multiple: true,
432
- syncHandle: () => {
433
- return this.getRoleList2()
434
- }
435
- },
436
- /*{
437
- title: "词汇", field: "dictSn", type: "select", common: true, itemOption: [], syncHandle: () => {
438
- return this.getDict()
439
- }
440
- },*/
441
- {title: this.$t1('登录名(批量)'), field: "loginAccounts", type: "inputBatch", common: false},
442
- {
443
- title: this.$t1('性别'), field: "gender", type: "select", common: false, itemOption: [
444
- {label: this.$t1('男'), value: 1},
445
- {label: this.$t1('女'), value: 2}
446
- ]
447
- },
448
- {title: this.$t1('邮编'), field: "zipCode", type: "input", common: false},
449
- {
450
- title: this.$t1('是否启用'), field: "enabled", type: "select", common: false, itemOption: [
451
- {label: this.$t1('启用'), value: true},
452
- {label: this.$t1('禁用'), value: false}
453
- ]
454
- }/*,
455
- {title: this.$t1('客户名称'), field: "customerName", type: "input", common: true, slot: "customerName"},
456
- {
457
- title: this.$t1('日期'),
458
- field: "startDate",
459
- field2: "endDate",
460
- type: "dateRange",
461
- common: true,
462
- widgetType: "date",
463
- valueFormat: "yyyy-MM-dd"
464
- },
465
- {title: this.$t1('年份'), field: "year", type: "date", common: true, widgetType: "year", valueFormat: "yyyy"},*/
466
- ],
467
- config: {
468
- pagerConfig: {
469
- pageSize: 500
470
- }
471
- }
472
- };
473
- this.$vxeTableUtil.initVxeTable(tableOption).then(opts => {
474
- this.vxeOption = opts;
475
- });
476
- /* this.$nextTick(() => {
477
- this.$refs['baseBillExport'].initExportData({
478
- target: this,
479
- btn: [{ code: 'USEREXCEL', name: '导出Excel(按模版)', type: 0 }, { code: 'USERPDF', name: '导出Pdf(按模版)', type: 1 }, { code: 'USERPRINT', name: '菜鸟打印', type: 2 }],
480
- param: item => {
481
- let checkRows = this.$refs['table-m1'].getCheckboxRecords(true);
482
- if (item.type != 2) {
483
- return checkRows.map(row => {
484
- return { id: row.id };
485
- });
486
- } else {
487
- let rows = checkRows.map(row => row.id);
488
- return rows.length ? { id: rows } : null;
489
- }
490
- }
491
- });
492
- }); */
493
- },
494
- importExcel() {
495
- let that = this;
496
- that.$excelImport({
497
- prefix: USER_PREFIX,
498
- excel: USER_PREFIX + '/excelTemplate/user/user.xlsx',
499
- multi: true,
500
- saveUrl: USER_PREFIX + '/user/batchImport',
501
- callback: () => {
502
- that.searchEvent();
503
- }
504
- });
505
- },
506
- getRoleList2() {
507
- return new Promise((resolve, reject) => {
508
- this.$http({
509
- url: USER_PREFIX + '/role/list',
510
- method: 'post',
511
- success: res => {
512
- let rows = res.objx || [];
513
- let outUserCodes = this.outUserCodes;
514
- if (this.userType == 1) {
515
- //组织用户
516
- rows = rows.filter(row => !outUserCodes.includes(row.code));
517
- } else if (this.userType == 2) {
518
- //外部用户
519
- rows = rows.filter(row => outUserCodes.includes(row.code));
520
- }
521
- let result = rows.map(row => {
522
- return {
523
- value: row.code,
524
- label: row.name
525
- }
526
- });
527
- resolve(result);
528
- }
529
- });
530
- });
531
- },
532
- getDict() {
533
- return new Promise((resolve, reject) => {
534
- this.$getBaseDicts({
535
- code: "orderType",
536
- success: ({dicts, dictMap}) => {
537
- let result = dicts.map(row => {
538
- return {
539
- value: row.sn,
540
- label: row.value
541
- }
542
- });
543
- resolve(result);
544
- }
545
- });
546
- });
547
-
548
- },
549
- getRoleList() {
550
- return this.$http({
551
- url: USER_PREFIX + '/role/list',
552
- method: 'post',
553
- success: res => {
554
- let rows = res.objx || [];
555
- let outUserCodes = this.outUserCodes;
556
- if (this.userType == 1) {
557
- //组织用户
558
- rows = rows.filter(row => !outUserCodes.includes(row.code));
559
- } else if (this.userType == 2) {
560
- //外部用户
561
- rows = rows.filter(row => outUserCodes.includes(row.code));
562
- }
563
- this.roleList = rows;
564
- return rows;
565
- }
566
- });
567
- },
568
- async initOutUserRoleCode() {
569
- return this.$http({
570
- url: USER_PREFIX + '/system_parameter/getByCode',
571
- method: 'post',
572
- data: {"code": "outUserRoleCode"},
573
- success: res => {
574
- let value = (!res.objx || !res.objx.value) ? "distributor" : res.objx.value;
575
- let codes = value.split(',');
576
- this.outUserCodes = codes;
577
- }
578
- });
579
- }
580
- }
581
- };
582
- </script>
1
+ <template>
2
+ <div id="containt">
3
+ <el-tabs v-model="activeName" class="tab-box">
4
+ <el-tab-pane :label="$t1('常规')" name="first">
5
+ <editView
6
+ v-if="showEdit"
7
+ visible-key="showEdit"
8
+ :_dataId.sync="dataId"
9
+ :parent-target="_self"
10
+ @reload="$reloadHandle"
11
+ :userType="userType"
12
+ :flag="flag"
13
+ ></editView>
14
+ </el-tab-pane>
15
+ <el-tab-pane :label="$t1('列表')" name="second">
16
+ <div class="tree-box fl">
17
+ <div class="tit" @click="clearNodeClick">
18
+ <b>{{ $t1("机构分类") }}</b>
19
+ </div>
20
+ <el-tree
21
+ :props="defaultProps"
22
+ :load="loadNode"
23
+ node-key="id"
24
+ ref="tree"
25
+ highlight-current
26
+ lazy
27
+ :expand-on-click-node="false"
28
+ @node-click="handleNodeClick"
29
+ class="tree-list"
30
+ icon-class="el-icon-arrow-down"
31
+ ></el-tree>
32
+ </div>
33
+ <label id="labBtn">
34
+ <div class="icon">
35
+ <i class="el-icon-more"></i>
36
+ <i class="el-icon-more"></i>
37
+ </div>
38
+ </label>
39
+ <div class="main-right fr" style="padding-left: 6px">
40
+ <div class="grid-height">
41
+ <vxe-grid
42
+ id="table-m1"
43
+ ref="table-m1"
44
+ :auto-resize="true"
45
+ v-bind="vxeOption"
46
+ @resizable-change="$vxeTableUtil.onColumnWitchChange"
47
+ @custom="$vxeTableUtil.customHandle"
48
+ >
49
+ <template #form>
50
+ <tableForm
51
+ :formData.sync="formData"
52
+ :advancedFormData.sync="advancedFormData"
53
+ @searchEvent="searchEvent"
54
+ @resetEvent="resetEvent"
55
+ >
56
+ <template #buttonLeft>
57
+ <vxe-button
58
+ status="primary"
59
+ class="button-sty"
60
+ icon="el-icon-plus"
61
+ @click="openEditDialog"
62
+ >
63
+ {{ $t1("新增") }}
64
+ </vxe-button>
65
+ <base-table-export
66
+ :option="{ title: $t1('账户导出'), targetRef: 'table-m1' }"
67
+ :parent-target="_self"
68
+ />
69
+ <vxe-button
70
+ status="primary"
71
+ class="button-sty"
72
+ icon="el-icon-download"
73
+ @click="importExcel"
74
+ >
75
+ {{ $t1("导入") }}
76
+ </vxe-button>
77
+ <base-input-export :option="exportOption" :parent-target="_self" />
78
+ </template>
79
+ <template #buttonRight>
80
+ <vxe-button
81
+ icon="el-icon-brush"
82
+ class="button-sty"
83
+ @click="resetEvent"
84
+ type="text"
85
+ status="primary"
86
+ plain
87
+ >{{ $t1("重置") }}
88
+ </vxe-button>
89
+ <vxe-button
90
+ status="warning"
91
+ icon="el-icon-search"
92
+ class="button-sty"
93
+ @click="searchEvent"
94
+ >
95
+ {{ $t1("搜索") }}
96
+ </vxe-button>
97
+ </template>
98
+ </tableForm>
99
+ </template>
100
+ </vxe-grid>
101
+ </div>
102
+ </div>
103
+ </el-tab-pane>
104
+ </el-tabs>
105
+ </div>
106
+ </template>
107
+
108
+ <script>
109
+ import editView from "./form_edit.vue";
110
+ import { treeScollx } from "@base/utils/global.js";
111
+ import tableForm from "@base/components/table/tableForm";
112
+
113
+ export default {
114
+ name: "user:form_list",
115
+ props: {
116
+ userType: {
117
+ type: Number,
118
+ },
119
+ flag: String,
120
+ },
121
+ components: {
122
+ tableForm,
123
+ editView: () => import("./edit.vue"),
124
+ },
125
+ created() {},
126
+ activated() {
127
+ // this.initTableList();
128
+ },
129
+ async mounted() {
130
+ treeScollx({ target: this, type: "default" });
131
+ await this.initOutUserRoleCode();
132
+ this.getRoleList();
133
+ this.initTableList();
134
+ },
135
+ data() {
136
+ return {
137
+ exportOption: {
138
+ prefix: USER_PREFIX,
139
+ tableRef: "table-m1",
140
+ title: this.$t1("用户"),
141
+ codes: [
142
+ "USEREXCEL",
143
+ "USERPDF",
144
+ "USERPRINT",
145
+ "USERHIPRINT",
146
+ "USERJDPRINT",
147
+ "USERPDDPRINT",
148
+ "USERVIPPRINT",
149
+ ],
150
+ onBeforePrint: (done, { etCode, etType }) => {
151
+ /*etType: 2 菜鸟打印,3 网页打印,6 京东打印*/
152
+ done();
153
+ },
154
+ onAfterPrint: ({ etCode, etType }, close) => {
155
+ /*etType: 2 菜鸟打印,3 网页打印,6 京东打印*/
156
+ /*close();//关闭弹框*/
157
+ },
158
+ },
159
+ printOption: {
160
+ prefix: USER_PREFIX,
161
+ tableRef: "table-m1",
162
+ param: {
163
+ type: "print",
164
+ code: "USERPRINT",
165
+ param: "tableDefault",
166
+ },
167
+ },
168
+ showEdit: false,
169
+ activeName: "second",
170
+ showUpload: true,
171
+ uploadSize: 10,
172
+ value10: "",
173
+ dataId: "",
174
+ tp: false,
175
+ showUserDialog: false,
176
+ nickName: "dd",
177
+ formData: { saleOrgName: null, roleCodes: [] },
178
+ vxeOption: {
179
+ className: "list-table",
180
+ },
181
+ defaultProps: {
182
+ label: "name", //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
183
+ children: [],
184
+ isLeaf: "leaf",
185
+ },
186
+ showAdvancedSearch: false,
187
+ advancedFormData: {},
188
+ roleList: [],
189
+ distributorCode: "distributor",
190
+ outUserCodes: [],
191
+ };
192
+ },
193
+ methods: {
194
+ searchEvent() {
195
+ this.$refs["table-m1"].commitProxy("reload");
196
+ },
197
+ resetEvent() {
198
+ this.formData = {};
199
+ this.advancedFormData = {};
200
+ this.$refs.tree.setCurrentKey();
201
+ this.$refs["table-m1"].commitProxy("reload");
202
+ },
203
+ openEditDialog(id) {
204
+ this.dataId = !id || typeof id == "object" ? 0 : id;
205
+ this.activeName = "first";
206
+ this.$openEditView("showEdit");
207
+ },
208
+ clearNodeClick() {
209
+ this.formData.saleOrgId = "";
210
+ this.formData.saleOrgName = "";
211
+ this.$refs.tree.setCurrentKey();
212
+ this.searchEvent();
213
+ },
214
+ handleNodeClick(data, node, v) {
215
+ this.$set(this.formData, "saleOrgId", data.id);
216
+ this.$set(this.formData, "saleOrgName", data.name);
217
+ this.$forceUpdate();
218
+ this.searchEvent();
219
+ },
220
+ // 异步树叶子节点懒加载逻辑
221
+ loadNode(node, resolve) {
222
+ let id = node && node.data && node.data.id ? node.data.id || "" : "";
223
+ let param = { enabled: true };
224
+ let url = !id
225
+ ? USER_PREFIX + "/sale_org/getAllList"
226
+ : USER_PREFIX + "/sale_org/getChildren";
227
+ this.$http({
228
+ url: url,
229
+ method: "post",
230
+ data: {
231
+ parent: id,
232
+ enabled: true,
233
+ },
234
+ success: (res) => {
235
+ res.objx.forEach((value) => {
236
+ value.leaf = !value.hasChild;
237
+ });
238
+ if (node.level === 0) {
239
+ if (res.objx.length > 0 && res.objx[0].isParent) {
240
+ this.$nextTick(() => {
241
+ let nodedata = node.childNodes[0];
242
+ nodedata.expanded = true;
243
+ nodedata.loadData();
244
+ });
245
+ }
246
+ }
247
+ resolve(res.objx);
248
+ },
249
+ });
250
+ },
251
+ initTableList() {
252
+ let otherColumns = [];
253
+ let userType = this.userType;
254
+ if (userType == 1) {
255
+ } else if (userType == 2) {
256
+ otherColumns.push(
257
+ ...[
258
+ {
259
+ field: "signatoryName",
260
+ title: this.$t1("签约人"),
261
+ width: 150,
262
+ },
263
+ {
264
+ field: "signatoryMobile",
265
+ title: this.$t1("签约人电话"),
266
+ width: 150,
267
+ },
268
+ ]
269
+ );
270
+ }
271
+ let tableOption = {
272
+ vue: this,
273
+ tableRef: "table-m1",
274
+ tableName: "basic_user_list-m11",
275
+ path: USER_PREFIX + "/user/listAllPage",
276
+ param: () => {
277
+ let formData = {
278
+ ...this.formData,
279
+ ...this.advancedFormData,
280
+ };
281
+ let outUserCodes = this.outUserCodes;
282
+ if (this.userType == 1) {
283
+ //组织用户
284
+ formData.neRoleCodes = [...outUserCodes];
285
+ } else if (this.userType == 2) {
286
+ //外部用户
287
+ if (!formData.roleCodes || !formData.roleCodes.length) {
288
+ formData.roleCodes = [...outUserCodes];
289
+ }
290
+ }
291
+ return formData;
292
+ },
293
+ columns: [
294
+ {
295
+ type: "checkbox",
296
+ width: 48,
297
+ resizable: false,
298
+ fixed: "left",
299
+ },
300
+ {
301
+ title: this.$t1("登录名"),
302
+ field: "loginAccount",
303
+ width: 250,
304
+ fixed: "left",
305
+ },
306
+ {
307
+ field: "nickName",
308
+ title: this.$t1("姓名"),
309
+ width: 150,
310
+ },
311
+ {
312
+ field: "mobile",
313
+ title: this.$t1("手机号"),
314
+ width: 150,
315
+ },
316
+ {
317
+ width: 150,
318
+ title: this.$t1("头像"),
319
+ field: "headPhotoUrl",
320
+ sortable: false,
321
+ slots: {
322
+ default: ({ row, rowIndex }) => {
323
+ let option = {
324
+ title: this.$t1("头像"),
325
+ rows: row.headPhotoUrl,
326
+ showViewButton: false,
327
+ };
328
+ return [<base-attachment option={option} />];
329
+ },
330
+ },
331
+ },
332
+ {
333
+ field: "enabled",
334
+ title: this.$t1("是否启用"),
335
+ width: 150,
336
+ slots: {
337
+ default: ({ row }) => {
338
+ if (row.enabled) {
339
+ return [<div class="txt-status">{this.$t1("启用")}</div>];
340
+ } else {
341
+ return [<div class="txt-status s-3">{this.$t1("禁用")}</div>];
342
+ }
343
+ },
344
+ },
345
+ },
346
+ {
347
+ field: "roleNames",
348
+ title: this.$t1("角色"),
349
+ width: 150,
350
+ },
351
+ {
352
+ field: "saleOrgNames",
353
+ title: this.$t1("机构"),
354
+ width: 150,
355
+ },
356
+ {
357
+ field: "positionNames",
358
+ title: this.$t1("岗位"),
359
+ width: 150,
360
+ },
361
+ {
362
+ field: "birth",
363
+ title: this.$t1("出生日期"),
364
+ width: 150,
365
+ slots: {
366
+ default: ({ row }) => {
367
+ var val = row.birth;
368
+ if (val) {
369
+ return val.substring(0, 10);
370
+ }
371
+ },
372
+ },
373
+ },
374
+ {
375
+ field: "zipCode",
376
+ title: this.$t1("邮编"),
377
+ width: 150,
378
+ },
379
+ {
380
+ field: "address",
381
+ title: this.$t1("地址"),
382
+ width: 150,
383
+ },
384
+ {
385
+ field: "empNo",
386
+ title: this.$t1("员工编码"),
387
+ width: 150,
388
+ },
389
+ {
390
+ field: "gender",
391
+ title: this.$t1("性别"),
392
+ width: 150,
393
+ slots: {
394
+ default: ({ row }) => {
395
+ var val = row.gender;
396
+ if (val == 1) {
397
+ return this.$t1("");
398
+ } else if (val == 2) {
399
+ return this.$t1("女");
400
+ }
401
+ },
402
+ },
403
+ },
404
+ {
405
+ field: "companyNames",
406
+ title: this.$t1("所属组织"),
407
+ width: 250,
408
+ },
409
+ ...otherColumns,
410
+ {
411
+ field: "createBy",
412
+ title: this.$t1("创建人"),
413
+ width: 150,
414
+ },
415
+ {
416
+ field: "modifyBy",
417
+ title: this.$t1("更新人"),
418
+ width: 150,
419
+ },
420
+ {
421
+ field: "modifyDate",
422
+ title: this.$t1("更新时间"),
423
+ width: 150,
424
+ },
425
+ {
426
+ field: "createDate",
427
+ title: this.$t1("创建时间"),
428
+ width: 150,
429
+ },
430
+ {
431
+ width: 47,
432
+ fixed: "right",
433
+ title: "",
434
+ sortable: false,
435
+ slots: {
436
+ default: ({ row }) => {
437
+ return [
438
+ <a
439
+ href="javascript:void(0);"
440
+ class="a-link"
441
+ onclick={() => {
442
+ this.openEditDialog(row.id);
443
+ }}
444
+ >
445
+ <el-tooltip
446
+ enterable={false}
447
+ enterable={false}
448
+ effect="dark"
449
+ content={this.$t1("查看")}
450
+ placement="top"
451
+ popper-class="tooltip-skin"
452
+ >
453
+ <i class="el-icon-edit" />
454
+ </el-tooltip>
455
+ </a>,
456
+ ];
457
+ },
458
+ },
459
+ },
460
+ ],
461
+ searchColumns: [
462
+ {
463
+ title: this.$t1("机构名称"),
464
+ field: "saleOrgName",
465
+ type: "input",
466
+ common: true,
467
+ disabled: true,
468
+ defaultValueEnabled: false,
469
+ },
470
+ {
471
+ title: this.$t1("登录名"),
472
+ field: "loginAccount",
473
+ type: "input",
474
+ common: true,
475
+ },
476
+ { title: this.$t1("姓名"), field: "nickName", type: "input", common: true },
477
+ { title: this.$t1("手机号"), field: "mobile", type: "input", common: true },
478
+ {
479
+ title: this.$t1("角色"),
480
+ field: "roleCodes",
481
+ type: "select",
482
+ common: true,
483
+ itemOption: [],
484
+ multiple: true,
485
+ syncHandle: () => {
486
+ return this.getRoleList2();
487
+ },
488
+ },
489
+ /*{
490
+ title: "词汇", field: "dictSn", type: "select", common: true, itemOption: [], syncHandle: () => {
491
+ return this.getDict()
492
+ }
493
+ },*/
494
+ {
495
+ title: this.$t1("登录名(批量)"),
496
+ field: "loginAccounts",
497
+ type: "inputBatch",
498
+ common: false,
499
+ },
500
+ {
501
+ title: this.$t1("性别"),
502
+ field: "gender",
503
+ type: "select",
504
+ common: false,
505
+ itemOption: [
506
+ { label: this.$t1("男"), value: 1 },
507
+ { label: this.$t1("女"), value: 2 },
508
+ ],
509
+ },
510
+ { title: this.$t1("邮编"), field: "zipCode", type: "input", common: false },
511
+ {
512
+ title: this.$t1("是否启用"),
513
+ field: "enabled",
514
+ type: "select",
515
+ common: false,
516
+ itemOption: [
517
+ { label: this.$t1("启用"), value: true },
518
+ { label: this.$t1("禁用"), value: false },
519
+ ],
520
+ } /*,
521
+ {title: this.$t1('客户名称'), field: "customerName", type: "input", common: true, slot: "customerName"},
522
+ {
523
+ title: this.$t1('日期'),
524
+ field: "startDate",
525
+ field2: "endDate",
526
+ type: "dateRange",
527
+ common: true,
528
+ widgetType: "date",
529
+ valueFormat: "yyyy-MM-dd"
530
+ },
531
+ {title: this.$t1('年份'), field: "year", type: "date", common: true, widgetType: "year", valueFormat: "yyyy"},*/,
532
+ ],
533
+ config: {
534
+ pagerConfig: {
535
+ pageSize: 500,
536
+ },
537
+ },
538
+ };
539
+ this.$vxeTableUtil.initVxeTable(tableOption).then((opts) => {
540
+ this.vxeOption = opts;
541
+ });
542
+ /* this.$nextTick(() => {
543
+ this.$refs['baseBillExport'].initExportData({
544
+ target: this,
545
+ btn: [{ code: 'USEREXCEL', name: '导出Excel(按模版)', type: 0 }, { code: 'USERPDF', name: '导出Pdf(按模版)', type: 1 }, { code: 'USERPRINT', name: '菜鸟打印', type: 2 }],
546
+ param: item => {
547
+ let checkRows = this.$refs['table-m1'].getCheckboxRecords(true);
548
+ if (item.type != 2) {
549
+ return checkRows.map(row => {
550
+ return { id: row.id };
551
+ });
552
+ } else {
553
+ let rows = checkRows.map(row => row.id);
554
+ return rows.length ? { id: rows } : null;
555
+ }
556
+ }
557
+ });
558
+ }); */
559
+ },
560
+ importExcel() {
561
+ let that = this;
562
+ that.$excelImport({
563
+ prefix: USER_PREFIX,
564
+ excel: USER_PREFIX + "/excelTemplate/user/user.xlsx",
565
+ multi: true,
566
+ saveUrl: USER_PREFIX + "/user/batchImport",
567
+ callback: () => {
568
+ that.searchEvent();
569
+ },
570
+ });
571
+ },
572
+ getRoleList2() {
573
+ return new Promise((resolve, reject) => {
574
+ this.$http({
575
+ url: USER_PREFIX + "/role/list",
576
+ method: "post",
577
+ success: (res) => {
578
+ let rows = res.objx || [];
579
+ let outUserCodes = this.outUserCodes;
580
+ if (this.userType == 1) {
581
+ //组织用户
582
+ rows = rows.filter((row) => !outUserCodes.includes(row.code));
583
+ } else if (this.userType == 2) {
584
+ //外部用户
585
+ rows = rows.filter((row) => outUserCodes.includes(row.code));
586
+ }
587
+ let result = rows.map((row) => {
588
+ return {
589
+ value: row.code,
590
+ label: row.name,
591
+ };
592
+ });
593
+ resolve(result);
594
+ },
595
+ });
596
+ });
597
+ },
598
+ getDict() {
599
+ return new Promise((resolve, reject) => {
600
+ this.$getBaseDicts({
601
+ code: "orderType",
602
+ success: ({ dicts, dictMap }) => {
603
+ let result = dicts.map((row) => {
604
+ return {
605
+ value: row.sn,
606
+ label: row.value,
607
+ };
608
+ });
609
+ resolve(result);
610
+ },
611
+ });
612
+ });
613
+ },
614
+ getRoleList() {
615
+ return this.$http({
616
+ url: USER_PREFIX + "/role/list",
617
+ method: "post",
618
+ success: (res) => {
619
+ let rows = res.objx || [];
620
+ let outUserCodes = this.outUserCodes;
621
+ if (this.userType == 1) {
622
+ //组织用户
623
+ rows = rows.filter((row) => !outUserCodes.includes(row.code));
624
+ } else if (this.userType == 2) {
625
+ //外部用户
626
+ rows = rows.filter((row) => outUserCodes.includes(row.code));
627
+ }
628
+ this.roleList = rows;
629
+ return rows;
630
+ },
631
+ });
632
+ },
633
+ async initOutUserRoleCode() {
634
+ return this.$http({
635
+ url: USER_PREFIX + "/system_parameter/getByCode",
636
+ method: "post",
637
+ data: { code: "outUserRoleCode" },
638
+ success: (res) => {
639
+ let value = !res.objx || !res.objx.value ? "distributor" : res.objx.value;
640
+ let codes = value.split(",");
641
+ this.outUserCodes = codes;
642
+ },
643
+ });
644
+ },
645
+ },
646
+ };
647
+ </script>