n20-common-lib 3.0.15 → 3.0.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "3.0.15",
3
+ "version": "3.0.16",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -12,11 +12,11 @@
12
12
  width: 100%;
13
13
  font-size: 14px;
14
14
  .top {
15
- padding: 12px 16px;
15
+ padding: 12px 0px;
16
16
  border-bottom: 1px solid #e5e6eb !important;
17
17
  }
18
18
  .filter {
19
- padding: 12px 16px 4px;
19
+ padding: 12px 0px 4px;
20
20
  border-bottom: 1px solid #e5e6eb !important;
21
21
  }
22
22
  .flex-item {
@@ -231,14 +231,15 @@ export default {
231
231
  viewName: this.form.viewName,
232
232
  viewType: '0',
233
233
  bussId: this.bussId,
234
- filterId: this.filterId,
235
- viewConfig: JSON.stringify(this.model)
234
+ viewConfig: JSON.stringify(this.model),
235
+ keyIds: JSON.stringify(this.checkList)
236
236
  }
237
237
  console.log(obj, 'obj')
238
238
  axios.post(`/bems/query/viewColumn/saveOrUpdateViewInfo`, obj).then((res) => {
239
239
  if (res.code === 200) {
240
240
  this.stVisible = false
241
241
  this.$message.success('保存成功')
242
+ this.$emit('refresh')
242
243
  }
243
244
  })
244
245
  },
@@ -466,7 +467,7 @@ export default {
466
467
  getFilterList() {
467
468
  if (!this.filterId) {
468
469
  if (this.checkIds.length === 0) {
469
- this.mackData(this.filterList)
470
+ this.GroupData = []
470
471
  } else {
471
472
  // 按照 checkIds 的顺序过滤和排序
472
473
  const sortedList = this.filterList
@@ -19,11 +19,6 @@ export default {
19
19
  closeOnClickModal: {
20
20
  type: Boolean,
21
21
  default: false
22
- },
23
- // 自定义距离顶部的距离,默认居中显示
24
- top: {
25
- type: String,
26
- default: '0'
27
22
  }
28
23
  },
29
24
  watch: {
@@ -37,15 +32,6 @@ export default {
37
32
  } else {
38
33
  this.$el.querySelector('.el-dialog__header').style.borderBottom = ''
39
34
  }
40
- // 使用 CSS transform 实现居中,避免内容变化时位置改变
41
- this.$nextTick(() => {
42
- const dialog = this.$el.querySelector('.el-dialog')
43
- if (dialog && this.top === '0') {
44
- dialog.style.position = 'relative'
45
- dialog.style.top = '50%'
46
- dialog.style.transform = 'translateY(-50%)'
47
- }
48
- })
49
35
  }
50
36
  }
51
37
  }
@@ -225,6 +225,7 @@ export default {
225
225
  },
226
226
  data() {
227
227
  return {
228
+ canSetFilter: [],
228
229
  // 字段配置
229
230
  fieldOptions: [
230
231
  { label: '分派账户所属机构', value: 'accountOrg', type: 'select', options: ['机构1', '机构2', '机构3'] },
@@ -461,8 +462,31 @@ export default {
461
462
  methods: {
462
463
  // 查询支持可配置高级查询的字段
463
464
  getAdvancedQueryFields() {
464
- axios.get('/bems/query/viewColumn/getColumnInfo', { bussId: this.bussId }).then((res) => {
465
- console.log(res, 'res')
465
+ axios.get('/bems/query/viewColumn/getColumnInfo', { bussId: this.bussId }, { loading: false }).then((res) => {
466
+ // 过滤可筛选的字段,保留完整对象信息
467
+ const searchableFields = res.data.filter((item) => {
468
+ return item.searchable === '1'
469
+ })
470
+ // 用 filterList 去匹配可搜索的字段,并设置 advancedQueryType
471
+ this.canSetFilter = this.filterList
472
+ .filter((item) => {
473
+ return searchableFields.some(
474
+ (field) => field.fieldCode === item.fieldCode || field.fieldCode === item.value
475
+ )
476
+ })
477
+ .map((item) => {
478
+ // 查找匹配的字段配置,获取 fieldType
479
+ const matchedField = searchableFields.find(
480
+ (field) => field.fieldCode === item.fieldCode || field.fieldCode === item.value
481
+ )
482
+ if (matchedField) {
483
+ // 设置 advancedQueryType 为 fieldType
484
+ this.$set(item, 'advancedQueryType', Number(matchedField.fieldType))
485
+ this.$set(item, 'value', matchedField.fieldCode)
486
+ }
487
+ return item
488
+ })
489
+ console.log(this.canSetFilter, 'canSetFilter')
466
490
  })
467
491
  },
468
492
  // 修改字段
@@ -17,20 +17,20 @@
17
17
  <template v-slot="{ item }">
18
18
  <div
19
19
  class="proFilterView-list-item"
20
- :class="{ 'is-selected': selectedItem === item.name }"
20
+ :class="{ 'is-selected': selectedItem === item.viewName }"
21
21
  @click="handleSelect(item)"
22
22
  >
23
- <span>{{ item.name }}</span>
24
- <i v-if="selectedItem === item.name" class="el-icon-check selected-icon"></i>
23
+ <span>{{ item.viewName }}</span>
24
+ <i v-if="selectedItem === item.viewName" class="el-icon-check selected-icon"></i>
25
25
  <el-button
26
- v-if="selectedItem !== item.name && item.name !== '所有的'"
26
+ v-if="selectedItem !== item.viewName && item.viewName !== '所有的'"
27
27
  type="text"
28
28
  size="mini"
29
29
  @click.stop="edit(item)"
30
30
  >{{ $lc('编辑') }}</el-button
31
31
  >
32
32
  <el-button
33
- v-if="selectedItem !== item.name && item.name !== '所有的'"
33
+ v-if="selectedItem !== item.viewName && item.viewName !== '所有的'"
34
34
  type="text"
35
35
  size="mini"
36
36
  @click.stop="deleteOne(item)"
@@ -45,7 +45,7 @@
45
45
  </div>
46
46
  </div>
47
47
  </el-popover>
48
- <el-button v-if="selectItem" class="activiti m-r" @click="edit(selectItem)">
48
+ <el-button v-if="selectItem" class="activiti m-r" @click="edit(selectItem, true)">
49
49
  <div class="flex-box flex-v">
50
50
  <!-- <img src="./find.svg" alt="" /> -->
51
51
  <i class="iconfont icon-find"></i>
@@ -53,7 +53,7 @@
53
53
  {{
54
54
  `视图数据范围(${
55
55
  (selectItem.keyIds && selectItem.keyIds.length) ||
56
- (selectItem.conditionGroups && selectItem.conditionGroups.length)
56
+ (this.conditionGroups && this.conditionGroups.length)
57
57
  })`
58
58
  }}
59
59
  </div>
@@ -78,6 +78,7 @@
78
78
  @clear="handleClear"
79
79
  @enter="filterFn"
80
80
  @change="changeFn"
81
+ @refresh="getFilterList"
81
82
  >
82
83
  <!-- 使用作用域插槽传递 searchValue -->
83
84
  <template v-for="filter in filterList.filter((item) => item.type === 'slot')" #[filter.slotName]="{ model }">
@@ -217,7 +218,9 @@ export default {
217
218
  // 视图筛选值
218
219
  searchForm: {},
219
220
  // 普通筛选值
220
- searchValue: {}
221
+ searchValue: {},
222
+ viewId: undefined,
223
+ isRefresh: false
221
224
  }
222
225
  },
223
226
  computed: {
@@ -265,7 +268,6 @@ export default {
265
268
  item.options = opts
266
269
  }
267
270
  })
268
- console.log(this.filterList, 'filterList updated')
269
271
  },
270
272
  changeFn(value) {
271
273
  console.log('changeFn', value)
@@ -293,151 +295,22 @@ export default {
293
295
  // 通过filterId拿取视图列表
294
296
  getFilterList() {
295
297
  let list = []
296
- axios.post(`/bems/query/viewColumn/getViewInfo`, { bussId: this.bussId }).then((res) => {
297
- console.log(res)
298
- })
299
- /* list = [
300
- {
301
- userNo: '001', // 用户编号
302
- pageNo: 'test1', // 页面编号
303
- viewId: '2', // 视图编号唯一值
304
- name: '测试视图2', // 视图名称
305
- viewType: '0', // 0 基础查询 1高级查询
306
- keyIds: [1, 3, 14], //选中的条件字段 高级查询则为空
307
- searchForm: {
308
- //筛选条件值
309
- seeValue: '2',
310
- qxfz: ['1', '2', '3'],
311
- types: []
298
+ axios.get(`/bems/query/viewColumn/getViewInfo`, { bussId: this.bussId }).then((res) => {
299
+ list = res.data.map((item) => {
300
+ item.keyIds = item.keyIds ? JSON.parse(item.keyIds) : []
301
+ return item
302
+ })
303
+ this.list = [
304
+ {
305
+ viewName: '所有的'
312
306
  },
313
- conditionGroups: [] //高级查询值 普通查询则为空
314
- },
315
- // 高级视图
316
- {
317
- userNo: '001', // 用户编号
318
- pageNo: 'test1', // 页面编号
319
- viewId: '3', // 视图编号唯一值
320
- name: '高级视图1', // 视图名称
321
- keyIds: [], //选中的条件字段 高级查询则为空
322
- searchForm: {}, // 普通查询条件值 高级查询则为空
323
- viewType: '1', // 0 基础查询 1高级查询
324
- conditionGroups: [
325
- //高级查询值
326
- {
327
- conditionLogic: 'or',
328
- conditions: [
329
- {
330
- field: 'qxfz',
331
- operator: 3,
332
- value: '1',
333
- advancedQueryType: 4,
334
- options: [
335
- {
336
- label: '权限分组权限分组权限分组',
337
- value: '1'
338
- },
339
- {
340
- label: '权限分组权限分组',
341
- value: '2'
342
- },
343
- {
344
- label: '权限分组权限分组权限分组权限分组',
345
- value: '3'
346
- }
347
- ],
348
- valueType: 'select'
349
- },
350
- {
351
- field: 'ser',
352
- operator: 1,
353
- value: '123123',
354
- advancedQueryType: 1,
355
- valueType: 'input'
356
- },
357
- {
358
- field: 'oN',
359
- operator: 1,
360
- value: '123123',
361
- advancedQueryType: 1,
362
- valueType: 'input'
363
- },
364
- {
365
- field: 'date',
366
- operator: 3,
367
- value: '2026-01-15',
368
- advancedQueryType: 3,
369
- valueType: 'datePicker'
370
- },
371
- {
372
- operator: 14,
373
- value: {
374
- startT: '2025-01-15',
375
- endT: '2026-01-15'
376
- },
377
- advancedQueryType: 3,
378
- valueType: 'dateRangePicker'
379
- },
380
- {
381
- field: 'num',
382
- operator: 8,
383
- value: 123,
384
- advancedQueryType: 2,
385
- valueType: 'inputNumber'
386
- },
387
- {
388
- operator: 13,
389
- value: {
390
- start: 1,
391
- end: 22
392
- },
393
- advancedQueryType: 2,
394
- valueType: 'inputNumberRange'
395
- }
396
- ]
397
- },
398
- {
399
- conditionLogic: 'or',
400
- conditions: [
401
- {
402
- field: 'type',
403
- operator: 3,
404
- value: '1',
405
- advancedQueryType: 4,
406
- options: [
407
- {
408
- label: '权限分组权限分组权限分组',
409
- value: '1'
410
- }
411
- ],
412
- valueType: 'select'
413
- },
414
- {
415
- field: 'types',
416
- operator: 6,
417
- value: '',
418
- advancedQueryType: 4,
419
- options: [
420
- {
421
- label2: '权限分组权限分组权限分组',
422
- value2: '1'
423
- }
424
- ],
425
- valueType: 'selectDisabled'
426
- }
427
- ]
428
- }
429
- ]
430
- }
431
- ] */
432
- this.list = [
433
- {
434
- name: '所有的'
435
- },
436
- ...list
437
- ]
307
+ ...list
308
+ ]
309
+ })
438
310
  },
439
311
  // 新增
440
312
  add() {
313
+ this.isRefresh = false
441
314
  this.stVisible = false
442
315
  this.visible = true
443
316
  this.isAdd = true
@@ -446,16 +319,16 @@ export default {
446
319
  pageNo: this.filterId,
447
320
  viewType: '0' // 明确设置 type 为 1
448
321
  }
449
- this.form.keyIds = this.filterList.map((item) => {
450
- return item.id
451
- })
322
+ this.viewId = undefined
323
+ this.form.keyIds = []
452
324
  this.conditionGroups = []
453
325
  this.searchForm = {
454
326
  ...this.getInitialSearchValue
455
327
  }
456
328
  },
457
329
  // 修改
458
- edit(item) {
330
+ edit(item, isRefresh = false) {
331
+ this.isRefresh = isRefresh
459
332
  console.log(item)
460
333
  this.stVisible = false
461
334
  this.visible = true
@@ -463,8 +336,12 @@ export default {
463
336
  this.key++
464
337
  // 赋值操作
465
338
  this.form = item
466
- this.searchForm = { ...this.getInitialSearchValue, ...item.searchForm }
467
- this.conditionGroups = item.conditionGroups
339
+ this.viewId = item.viewId
340
+ if (item.viewType === '0') {
341
+ this.searchForm = { ...this.getInitialSearchValue, ...JSON.parse(item.viewConfig) }
342
+ } else {
343
+ this.conditionGroups = JSON.parse(item.viewConfig)?.conditionGroups || []
344
+ }
468
345
  },
469
346
  // 保存筛选条件
470
347
  saveCheckData(data) {
@@ -480,7 +357,7 @@ export default {
480
357
  viewConfig = JSON.stringify(this.searchForm)
481
358
  keyIds = this.form.keyIds
482
359
  } else {
483
- viewConfig = JSON.stringify(this.conditionGroups)
360
+ viewConfig = JSON.stringify({ conditionGroups: this.conditionGroups })
484
361
  keyIds = []
485
362
  }
486
363
  this.form.viewConfig = viewConfig
@@ -495,17 +372,24 @@ export default {
495
372
  viewName: this.form.viewName,
496
373
  viewType: this.form.viewType,
497
374
  bussId: this.bussId,
498
- viewId: this.filterId,
499
375
  viewConfig: this.form.viewConfig,
500
- keyIds
376
+ keyIds: JSON.stringify(keyIds),
377
+ viewId: this.viewId
501
378
  }
502
- console.log(obj, 'obj')
503
379
  axios.post('/bems/query/viewColumn/saveOrUpdateViewInfo', obj).then((res) => {
504
380
  if (res.code !== 200) {
505
381
  return false
506
382
  }
507
383
  this.visible = false
508
384
  this.$message.success('保存成功')
385
+ this.getFilterList()
386
+ this.$nextTick(() => {
387
+ if (this.isRefresh) {
388
+ const obj = this.list.find((item) => item.viewId === this.viewId)
389
+ this.handleSelect(obj)
390
+ this.selectItem = obj
391
+ }
392
+ })
509
393
  })
510
394
  },
511
395
  // 删除
@@ -520,16 +404,22 @@ export default {
520
404
  },
521
405
  // 选中视图
522
406
  handleSelect(item) {
407
+ console.log(item)
523
408
  this.stVisible = false
524
- this.selectedItem = item.name
525
- if (item.name === '所有的') {
409
+ this.selectItem = item
410
+ this.selectedItem = item.viewName
411
+ if (item.viewName === '所有的') {
526
412
  this.selectItem = ''
527
- return false
413
+ this.searchValue = {}
414
+ this.conditionGroups = []
415
+ }
416
+ if (item.viewType === '0') {
417
+ this.searchForm = JSON.parse(item.viewConfig)
418
+ this.searchValue = JSON.parse(item.viewConfig)
419
+ } else if (item.viewType === '1') {
420
+ this.conditionGroups = JSON.parse(item.viewConfig)?.conditionGroups || []
421
+ this.searchValue = { ...this.getInitialSearchValue }
528
422
  }
529
- this.searchForm = item.searchForm
530
- this.searchValue = item.viewType === '0' ? item.searchForm : { ...this.getInitialSearchValue }
531
- this.conditionGroups = item.conditionGroups
532
- this.selectItem = item
533
423
  this.$emit('filter', this.filterObj)
534
424
  },
535
425
  // 拖动保存视图列表
@@ -545,66 +435,6 @@ export default {
545
435
  this.searchForm = { ...this.getInitialSearchValue }
546
436
  }
547
437
  }
548
-
549
- // 高级视图
550
-
551
- // 提供接口
552
- // 根据用户userNo 及视图pageNo 返回当前视图列表
553
- /* eg: [
554
- {
555
- userNo: '001', // 用户编号
556
- pageNo: 'test1', // 页面编号
557
- id: '1', // 视图编号唯一值
558
- name: '测试视图', // 视图名称
559
- type: '1', // 1 基础查询 2高级查询
560
- keyIds: [1, 2, 3], // 视图字段id(基础查询有,高级查询为空)
561
- conditionGroups:[], //高级查询条件
562
- searchValue: { // 搜索条件值
563
- qxfz: ['1', '2', '3'],
564
- types: [],
565
- datetime: '2026-01-08 00:00:00'
566
- }
567
- },
568
- ] */
569
-
570
- // 保存视图列表
571
- /*eg:
572
- {
573
- userNo: '001', // 用户编号
574
- pageNo: 'test1', // 页面编号
575
- id: '1', // 视图编号唯一值
576
- name: '测试视图', // 视图名称
577
- type: '1', // 1 基础查询 2高级查询
578
- keyIds: [1, 2, 3], // 视图字段id(基础查询有,高级查询为空)
579
- conditionGroups:[], //高级查询条件
580
- searchValue: { // 搜索条件值
581
- qxfz: ['1', '2', '3'],
582
- types: [],
583
- datetime: '2026-01-08 00:00:00'
584
- }
585
- }
586
-
587
- */
588
-
589
- // 调整当前视图顺序
590
- /*
591
- eg:
592
- {
593
- userNo: '001', // 用户编号
594
- pageNo: 'test1', // 页面编号
595
- views:[1,2,3] //视图编号
596
- }
597
- */
598
- // 传递给业务模块参数说明:
599
- // 普通视图直接输出条件值给业务前端 业务前端塞入参数查询
600
- // 高级视图将高级视图的viewId 传给业务前端 业务前端塞入参数查询
601
- // 高级视图+普通条件混合查询 就把这两个参数都传给后端
602
-
603
- /*
604
- 问题点:
605
- 1. 是否是所有的条件都是后端注册?还是只用注册
606
-
607
- */
608
438
  }
609
439
  }
610
440
  </script>