w-web-perm 1.0.25 → 1.0.26

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.
Files changed (42) hide show
  1. package/dist/css/{app.f22995d1.css → app.d0e43dcc.css} +1 -1
  2. package/dist/index.tmp +9 -1
  3. package/dist/js/app-legacy.b0850281.js +2 -0
  4. package/dist/js/app-legacy.b0850281.js.map +1 -0
  5. package/dist/js/app.db01fef5.js +2 -0
  6. package/dist/js/app.db01fef5.js.map +1 -0
  7. package/dist/js/chunk-vendors-legacy.0432e7bc.js +13 -0
  8. package/dist/js/chunk-vendors-legacy.0432e7bc.js.map +1 -0
  9. package/dist/js/chunk-vendors.0432e7bc.js +13 -0
  10. package/dist/js/chunk-vendors.0432e7bc.js.map +1 -0
  11. package/dist/w-web-perm.umd.js +2 -2
  12. package/dist/w-web-perm.umd.js.map +1 -1
  13. package/docs/WWebPerm.html +1 -1
  14. package/docs/WWebPerm.mjs.html +30 -2
  15. package/docs/index.html +1 -1
  16. package/package.json +5 -5
  17. package/public/index.html +8 -0
  18. package/server/WWebPerm.mjs +29 -1
  19. package/src/App.vue +6 -1
  20. package/src/components/Layout.vue +0 -11
  21. package/src/components/LayoutContent.vue +22 -22
  22. package/src/components/LayoutContentGrups.vue +245 -65
  23. package/src/components/LayoutContentPemis.vue +245 -68
  24. package/src/components/LayoutContentTargets.vue +225 -55
  25. package/src/components/LayoutContentUsers.vue +250 -68
  26. package/src/components/VeCgrups.vue +27 -34
  27. package/src/components/VeCpemis.vue +27 -34
  28. package/src/components/VeCrules.vue +25 -31
  29. package/src/components/VeGrupBlngUsers.vue +30 -18
  30. package/src/components/VePemiBlngGrups.vue +30 -18
  31. package/src/schema/tables/pemis.mjs +1 -1
  32. package/src/store/mutations.mjs +64 -9
  33. package/srv.mjs +9 -1
  34. package/tableTags-web-perm.json +1 -1
  35. package/dist/js/app-legacy.67f2c0dc.js +0 -2
  36. package/dist/js/app-legacy.67f2c0dc.js.map +0 -1
  37. package/dist/js/app.67f2c0dc.js +0 -2
  38. package/dist/js/app.67f2c0dc.js.map +0 -1
  39. package/dist/js/chunk-vendors-legacy.d89048a8.js +0 -13
  40. package/dist/js/chunk-vendors-legacy.d89048a8.js.map +0 -1
  41. package/dist/js/chunk-vendors.d89048a8.js +0 -13
  42. package/dist/js/chunk-vendors.d89048a8.js.map +0 -1
@@ -3,11 +3,11 @@
3
3
  style="height:100%;"
4
4
  v-domresize
5
5
  @domresize="resizePanel"
6
- :changeGrups="changeGrups"
6
+ :changeParams="changeParams"
7
7
  >
8
8
 
9
9
  <div
10
- style="border-bottom:1px solid #ddd; background:#fff;"
10
+ style="_border-bottom:1px solid #ddd; background:#fff;"
11
11
  v-domresize
12
12
  @domresize="resizeHead"
13
13
  >
@@ -19,20 +19,96 @@
19
19
  <WIcon
20
20
  :icon="mdiSelectGroup"
21
21
  :color="'#000'"
22
- :size="26"
22
+ :size="32"
23
23
  ></WIcon>
24
24
 
25
- <div style="padding-left:10px; font-size:1.4rem; color:#000;">
26
- {{$t('managementGrups')}}
25
+ <div style="padding-left:12px;">
26
+
27
+ <div style="font-size:1.4rem; color:#000;">
28
+ {{$t('managementGrups')}}
29
+ </div>
30
+
31
+ <div style="padding-top:2px; font-size:0.8rem; color:#666;">
32
+ {{$t('managementGrupsMsg')}}
33
+ </div>
34
+
27
35
  </div>
28
36
 
29
37
  </div>
30
38
  </div>
31
39
 
32
40
  <!-- 功能區 -->
33
- <div style="padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;">
41
+ <div
42
+ style="padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;"
43
+ _v-if="showIsEditable || isEditable"
44
+ >
45
+
46
+ <template v-if="showIsEditable">
47
+
48
+ <div style="padding:6px 0px 4px 4px;">
49
+ <WSwitch
50
+ v-model="isEditable"
51
+ :text="$t('modeEdit')"
52
+ ></WSwitch>
53
+ </div>
54
+
55
+ <div style="padding-left:10px;"></div>
56
+
57
+ </template>
58
+
59
+ <template v-if="true">
60
+
61
+ <WPopup
62
+ :isolated="true"
63
+ _show=""
64
+ _hide=""
65
+ >
66
+ <template v-slot:trigger>
67
+ <WButtonCircle
68
+ :paddingStyle="{v:6,h:6}"
69
+ :tooltip="$t('showTabCols')"
70
+ :icon="mdiTableHeadersEye"
71
+ :backgroundColor="'#fff'"
72
+ :backgroundColorHover="'#f2f2f2'"
73
+ _textColor="'#eee'"
74
+ _textColorHover="'#fff'"
75
+ :iconColor="'#444'"
76
+ :iconColorHover="'#222'"
77
+ :shadow="false"
78
+ _click=""
79
+ ></WButtonCircle>
80
+ </template>
81
+
82
+ <template v-slot:content>
83
+ <div style="padding:10px 0px 10px 0px;">
84
+
85
+ <div style="padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;">
86
+ {{$t('showTabCols')}}
87
+ </div>
34
88
 
35
- <template>
89
+ <div style="padding:7px 9px 0px 7px;">
90
+ <WInputCheckbox
91
+ :items="tabKeysPick"
92
+ v-model="tabKeysShow"
93
+ @input="toggleTabKeys"
94
+ >
95
+ <template v-slot="props">
96
+ <div style="padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;">
97
+ {{getHead(props.item.data)}}
98
+ </div>
99
+ </template>
100
+ </WInputCheckbox>
101
+ </div>
102
+
103
+ </div>
104
+ </template>
105
+ </WPopup>
106
+
107
+ <div style="padding-left:4px;"></div>
108
+
109
+ </template>
110
+
111
+ <template v-if="isEditable">
36
112
 
37
113
  <WButtonCircle
38
114
  :paddingStyle="{v:6,h:6}"
@@ -48,11 +124,11 @@
48
124
  @click="addItem"
49
125
  ></WButtonCircle>
50
126
 
51
- <div style="padding-left:6px;"></div>
127
+ <div style="padding-left:4px;"></div>
52
128
 
53
129
  </template>
54
130
 
55
- <template v-if="hasItemCheckOne">
131
+ <template v-if="isEditable && hasItemCheckOne">
56
132
 
57
133
  <WButtonCircle
58
134
  :paddingStyle="{v:6,h:6}"
@@ -68,11 +144,11 @@
68
144
  @click="copyItem"
69
145
  ></WButtonCircle>
70
146
 
71
- <div style="padding-left:6px;"></div>
147
+ <div style="padding-left:4px;"></div>
72
148
 
73
149
  </template>
74
150
 
75
- <template v-if="hasItemsCheck">
151
+ <template v-if="isEditable && hasItemsCheck">
76
152
 
77
153
  <WButtonCircle
78
154
  :paddingStyle="{v:6,h:6}"
@@ -88,11 +164,11 @@
88
164
  @click="deleteItemsCheck"
89
165
  ></WButtonCircle>
90
166
 
91
- <div style="padding-left:6px;"></div>
167
+ <div style="padding-left:4px;"></div>
92
168
 
93
169
  </template>
94
170
 
95
- <template v-if="isModified">
171
+ <template v-if="isEditable && isModified">
96
172
 
97
173
  <WButtonCircle
98
174
  :paddingStyle="{v:6,h:6}"
@@ -108,7 +184,7 @@
108
184
  @click="saveGrups"
109
185
  ></WButtonCircle>
110
186
 
111
- <div style="padding-left:6px;"></div>
187
+ <div style="padding-left:4px;"></div>
112
188
 
113
189
  </template>
114
190
 
@@ -140,7 +216,7 @@
140
216
  </template>
141
217
 
142
218
  <script>
143
- import { mdiSelectGroup, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'
219
+ import { mdiSelectGroup, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'
144
220
  import JSON5 from 'json5'
145
221
  import get from 'lodash-es/get.js'
146
222
  import set from 'lodash-es/set.js'
@@ -154,15 +230,22 @@ import haskey from 'wsemi/src/haskey.mjs'
154
230
  import isestr from 'wsemi/src/isestr.mjs'
155
231
  import iseobj from 'wsemi/src/iseobj.mjs'
156
232
  import cstr from 'wsemi/src/cstr.mjs'
233
+ import arrPull from 'wsemi/src/arrPull.mjs'
157
234
  import WIcon from 'w-component-vue/src/components/WIcon.vue'
235
+ import WSwitch from 'w-component-vue/src/components/WSwitch.vue'
158
236
  import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
237
+ import WPopup from 'w-component-vue/src/components/WPopup.vue'
238
+ import WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'
159
239
  import WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'
160
240
 
161
241
 
162
242
  export default {
163
243
  components: {
164
244
  WIcon,
245
+ WSwitch,
165
246
  WButtonCircle,
247
+ WPopup,
248
+ WInputCheckbox,
166
249
  WAggridVueDyn,
167
250
  },
168
251
  props: {
@@ -178,6 +261,7 @@ export default {
178
261
  mdiCheckboxMarkedCircle,
179
262
  mdiCloudUploadOutline,
180
263
  mdiTrashCanOutline,
264
+ mdiTableHeadersEye,
181
265
  mdiPlus,
182
266
  mdiPencilOutline,
183
267
  mdiContentCopy,
@@ -187,8 +271,46 @@ export default {
187
271
  headHeight: 100,
188
272
 
189
273
  firstLoading: true,
274
+ firstSetting: true,
275
+ showIsEditable: false,
276
+ isEditable: false,
190
277
  isModified: false,
191
278
 
279
+ tabKeys: [
280
+ 'id',
281
+ 'name',
282
+ 'description',
283
+ 'from',
284
+ 'belongUsers',
285
+ 'cpemis',
286
+ 'userId',
287
+ 'timeCreate',
288
+ 'userIdUpdate',
289
+ 'timeUpdate',
290
+ ],
291
+ tabKeysPick: [
292
+ 'name',
293
+ 'description',
294
+ 'from',
295
+ 'belongUsers',
296
+ 'cpemis',
297
+ 'userId',
298
+ 'timeCreate',
299
+ 'userIdUpdate',
300
+ 'timeUpdate',
301
+ ],
302
+ tabKeysShow: [
303
+ 'name',
304
+ 'description',
305
+ // 'from',
306
+ 'belongUsers',
307
+ 'cpemis',
308
+ // 'userId',
309
+ // 'timeCreate',
310
+ // 'userIdUpdate',
311
+ // 'timeUpdate',
312
+ ],
313
+
192
314
  items: [],
193
315
  itemsCheck: [],
194
316
  opt: null,
@@ -204,9 +326,24 @@ export default {
204
326
  vo.$dg.showVeGrupBlngUsersById = vo.showVeGrupBlngUsersById
205
327
  vo.$dg.showVeCpemisById = vo.showVeCpemisById
206
328
 
329
+ //firstSetting
330
+ if (vo.firstSetting) {
331
+ // console.log('webInfor', vo.webInfor)
332
+ let showModeEditGrups = get(vo, 'webInfor.showModeEditGrups', '')
333
+ vo.showIsEditable = showModeEditGrups === 'y'
334
+ let modeEditGrups = get(vo, 'webInfor.modeEditGrups', '')
335
+ vo.isEditable = modeEditGrups === 'y'
336
+ vo.firstSetting = false
337
+ }
338
+
207
339
  },
208
340
  computed: {
209
341
 
342
+ webInfor: function() {
343
+ let wi = get(this, `$store.state.webInfor`)
344
+ return wi
345
+ },
346
+
210
347
  targets: function() {
211
348
  let rs = get(this, `$store.state.targets`)
212
349
  rs = sortBy(rs, 'order')
@@ -305,28 +442,24 @@ export default {
305
442
  return kp
306
443
  },
307
444
 
308
- changeGrups: function() {
309
- // console.log('computed changeGrups')
445
+ changeParams: function() {
446
+ // console.log('computed changeParams')
310
447
 
311
448
  let vo = this
312
449
 
313
- //check
314
- if (size(vo.grups) === 0) {
315
- return ''
316
- }
317
-
318
- //grups, kpUseGrupUser
450
+ //trigger
451
+ let isEditable = vo.isEditable
319
452
  let grups = cloneDeep(vo.grups)
320
453
  let kpUseGrupUser = cloneDeep(vo.kpUseGrupUser)
321
454
 
322
- //genItems
455
+ //items
323
456
  let items = vo.genItems(grups, kpUseGrupUser)
324
457
 
325
458
  //save
326
459
  vo.items = items
327
460
 
328
461
  //genOpt
329
- vo.genOpt()
462
+ vo.genOpt({ isEditable })
330
463
 
331
464
  //firstLoading
332
465
  vo.firstLoading = false
@@ -415,6 +548,25 @@ export default {
415
548
  return c
416
549
  },
417
550
 
551
+ kpHead: function() {
552
+ let vo = this
553
+
554
+ let kp = {
555
+ 'id': vo.$t('id'),
556
+ 'name': vo.$t('name'),
557
+ 'description': vo.$t('description'),
558
+ 'from': vo.$t('from'),
559
+ 'belongUsers': vo.$t('belongUsers'),
560
+ 'cpemis': vo.$t('grupCpemis'),
561
+ 'userId': vo.$t('userId'),
562
+ 'timeCreate': vo.$t('timeCreate'),
563
+ 'userIdUpdate': vo.$t('userIdUpdate'),
564
+ 'timeUpdate': vo.$t('timeUpdate'),
565
+ }
566
+
567
+ return kp
568
+ },
569
+
418
570
  },
419
571
  methods: {
420
572
 
@@ -439,6 +591,16 @@ export default {
439
591
 
440
592
  },
441
593
 
594
+ getHead: function(key) {
595
+ // console.log('methods getHead', key)
596
+
597
+ let vo = this
598
+
599
+ let head = get(vo, `kpHead.${key}`, '')
600
+
601
+ return head
602
+ },
603
+
442
604
  genOpt: function() {
443
605
  // console.log('methods genOpt')
444
606
 
@@ -452,32 +614,39 @@ export default {
452
614
  if (size(vo.items) > 0) {
453
615
 
454
616
  //ks
455
- let ks = [
456
- 'id',
457
- 'name',
458
- 'belongUsers',
459
- 'description',
460
- 'from',
461
- 'cpemis',
462
- 'userId',
463
- 'timeCreate',
464
- 'userIdUpdate',
465
- 'timeUpdate',
466
- ]
617
+ let ks = vo.tabKeys
467
618
  // console.log('ks', ks)
468
619
 
469
620
  //kpHead
470
- let kpHead = {
471
- 'id': vo.$t('id'),
472
- 'name': vo.$t('name'),
473
- 'belongUsers': vo.$t('belongUsers'),
474
- 'description': vo.$t('description'),
475
- 'from': vo.$t('from'),
476
- 'cpemis': vo.$t('grupCpemis'),
477
- 'userId': vo.$t('userId'),
478
- 'timeCreate': vo.$t('timeCreate'),
479
- 'userIdUpdate': vo.$t('userIdUpdate'),
480
- 'timeUpdate': vo.$t('timeUpdate'),
621
+ let kpHead = vo.kpHead
622
+
623
+ //kpCellEditable, kpRowDrag, kpHeadCheckBox
624
+ let kpCellEditable = {}
625
+ let kpRowDrag = {}
626
+ let kpHeadCheckBox = {}
627
+ if (vo.isEditable) {
628
+ kpCellEditable = {
629
+ 'name': true,
630
+ 'description': true,
631
+ 'from': true,
632
+ }
633
+ kpRowDrag = {
634
+ 'name': true,
635
+ }
636
+ kpHeadCheckBox = {
637
+ 'name': true,
638
+ }
639
+ }
640
+
641
+ //kpHeadHide
642
+ let kpHeadHide = {
643
+ 'id': true,
644
+ }
645
+ if (true) {
646
+ let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)
647
+ each(tabKeysHide, (k) => {
648
+ kpHeadHide[k] = true
649
+ })
481
650
  }
482
651
 
483
652
  //opt
@@ -487,17 +656,17 @@ export default {
487
656
  keys: ks,
488
657
  kpHead,
489
658
  // autoFitColumn: true,
659
+ defCellEditable: vo.isEditable,
490
660
  defHeadFilter: true,
491
661
  defCellAlignH: 'left',
492
- kpHeadHide: {
493
- 'id': true,
494
- },
662
+ kpHeadHide,
495
663
  kpHeadFixLeft: {
496
664
  'name': true,
497
665
  },
498
666
  defHeadMinWidth: 150,
499
667
  kpHeadWidth: {
500
668
  'name': 300,
669
+ 'description': 300,
501
670
  'belongUsers': 300,
502
671
  'cpemis': 300,
503
672
  'timeCreate': 220,
@@ -506,26 +675,18 @@ export default {
506
675
  kpHeadFilterType: {
507
676
  'id': 'text',
508
677
  'name': 'text',
509
- 'belongUsers': 'text',
510
678
  'description': 'text',
511
679
  'from': 'text',
680
+ 'belongUsers': 'text',
512
681
  'cpemis': 'text',
513
682
  'userId': 'text',
514
683
  'timeCreate': 'text',
515
684
  'userIdUpdate': 'text',
516
685
  'timeUpdate': 'text',
517
686
  },
518
- kpCellEditable: {
519
- 'name': true,
520
- 'description': true,
521
- 'from': true,
522
- },
523
- kpRowDrag: {
524
- 'name': true,
525
- },
526
- kpHeadCheckBox: {
527
- 'name': true,
528
- },
687
+ kpCellEditable,
688
+ kpRowDrag,
689
+ kpHeadCheckBox,
529
690
  kpHeadFilter: {
530
691
  'belongUsers': false,
531
692
  'cpemis': false,
@@ -631,6 +792,19 @@ export default {
631
792
 
632
793
  },
633
794
 
795
+ toggleTabKeys: function() {
796
+ let vo = this
797
+
798
+ //cmp
799
+ let cmp = get(vo, '$refs.rftable.$refs.$self')
800
+ // console.log('cmp', cmp)
801
+
802
+ //showKeys
803
+ cmp.showKeys(vo.tabKeysShow)
804
+ // console.log('tabKeysShow', vo.tabKeysShow)
805
+
806
+ },
807
+
634
808
  genItems: function(grups, kpUseGrupUser) {
635
809
  // console.log('method genItems', grups, kpUseGrupUser)
636
810
 
@@ -944,7 +1118,10 @@ export default {
944
1118
  }
945
1119
 
946
1120
  //showVeGrupBlngUsers
947
- vo.$dg.showVeGrupBlngUsers(r)
1121
+ vo.$dg.showVeGrupBlngUsers({
1122
+ isEditable: vo.isEditable,
1123
+ grup: r,
1124
+ })
948
1125
  .then(() => {})
949
1126
  .catch(() => {})
950
1127
 
@@ -982,7 +1159,10 @@ export default {
982
1159
  }
983
1160
 
984
1161
  //showVeCpemis
985
- vo.$dg.showVeCpemis(r)
1162
+ vo.$dg.showVeCpemis({
1163
+ isEditable: vo.isEditable,
1164
+ grup: r,
1165
+ })
986
1166
  .then((cpemis) => {
987
1167
  // console.log('cpemis', cpemis)
988
1168