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
- :changePemis="changePemis"
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="mdiStackOverflow"
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('managementPemis')}}
25
+ <div style="padding-left:12px;">
26
+
27
+ <div style="font-size:1.4rem; color:#000;">
28
+ {{$t('managementPemis')}}
29
+ </div>
30
+
31
+ <div style="padding-top:2px; font-size:0.8rem; color:#666;">
32
+ {{$t('managementPemisMsg')}}
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="savePemis"
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 { mdiStackOverflow, mdiVectorPolylinePlus, mdiCheckboxMarkedCircle, mdiCloudUploadOutline, mdiTrashCanOutline, mdiPlus, mdiPencilOutline, mdiContentCopy } from '@mdi/js/mdi.js'
219
+ import { mdiStackOverflow, 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
+ 'belongGrups',
285
+ 'crules',
286
+ 'userId',
287
+ 'timeCreate',
288
+ 'userIdUpdate',
289
+ 'timeUpdate',
290
+ ],
291
+ tabKeysPick: [
292
+ 'name',
293
+ 'description',
294
+ 'from',
295
+ 'belongGrups',
296
+ 'crules',
297
+ 'userId',
298
+ 'timeCreate',
299
+ 'userIdUpdate',
300
+ 'timeUpdate',
301
+ ],
302
+ tabKeysShow: [
303
+ 'name',
304
+ 'description',
305
+ // 'from',
306
+ 'belongGrups',
307
+ 'crules',
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.showVePemiBlngGrupsById = vo.showVePemiBlngGrupsById
205
327
  vo.$dg.showVeCrulesById = vo.showVeCrulesById
206
328
 
329
+ //firstSetting
330
+ if (vo.firstSetting) {
331
+ // console.log('webInfor', vo.webInfor)
332
+ let showModeEditPemis = get(vo, 'webInfor.showModeEditPemis', '')
333
+ vo.showIsEditable = showModeEditPemis === 'y'
334
+ let modeEditPemis = get(vo, 'webInfor.modeEditPemis', '')
335
+ vo.isEditable = modeEditPemis === '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,31 +442,24 @@ export default {
305
442
  return kp
306
443
  },
307
444
 
308
- changePemis: function() {
309
- // console.log('computed changePemis')
445
+ changeParams: function() {
446
+ // console.log('computed changeParams')
310
447
 
311
448
  let vo = this
312
449
 
313
- //check
314
- if (size(vo.pemis) === 0) {
315
- return ''
316
- }
317
-
318
- //pemis, kpUsePemiGrup
450
+ //trigger
451
+ let isEditable = vo.isEditable
319
452
  let pemis = cloneDeep(vo.pemis)
320
453
  let kpUsePemiGrup = cloneDeep(vo.kpUsePemiGrup)
321
454
 
322
- //genItems
455
+ //items
323
456
  let items = vo.genItems(pemis, kpUsePemiGrup)
324
457
 
325
- // //cloneDeep
326
- // let items = cloneDeep(vo.pemis)
327
-
328
458
  //save
329
459
  vo.items = items
330
460
 
331
461
  //genOpt
332
- vo.genOpt()
462
+ vo.genOpt({ isEditable })
333
463
 
334
464
  //firstLoading
335
465
  vo.firstLoading = false
@@ -418,6 +548,25 @@ export default {
418
548
  return c
419
549
  },
420
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
+ 'belongGrups': vo.$t('belongGrups'),
560
+ 'crules': vo.$t('pemiCrules'),
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
+
421
570
  },
422
571
  methods: {
423
572
 
@@ -442,6 +591,16 @@ export default {
442
591
 
443
592
  },
444
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
+
445
604
  genOpt: function() {
446
605
  // console.log('methods genOpt')
447
606
 
@@ -455,32 +614,39 @@ export default {
455
614
  if (size(vo.items) > 0) {
456
615
 
457
616
  //ks
458
- let ks = [
459
- 'id',
460
- 'name',
461
- 'belongGrups',
462
- 'description',
463
- 'from',
464
- 'crules',
465
- 'userId',
466
- 'timeCreate',
467
- 'userIdUpdate',
468
- 'timeUpdate',
469
- ]
617
+ let ks = vo.tabKeys
470
618
  // console.log('ks', ks)
471
619
 
472
620
  //kpHead
473
- let kpHead = {
474
- 'id': vo.$t('id'),
475
- 'name': vo.$t('name'),
476
- 'belongGrups': vo.$t('belongGrups'),
477
- 'description': vo.$t('description'),
478
- 'from': vo.$t('from'),
479
- 'crules': vo.$t('pemiCrules'),
480
- 'userId': vo.$t('userId'),
481
- 'timeCreate': vo.$t('timeCreate'),
482
- 'userIdUpdate': vo.$t('userIdUpdate'),
483
- '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
+ })
484
650
  }
485
651
 
486
652
  //opt
@@ -490,17 +656,17 @@ export default {
490
656
  keys: ks,
491
657
  kpHead,
492
658
  // autoFitColumn: true,
659
+ defCellEditable: vo.isEditable,
493
660
  defHeadFilter: true,
494
661
  defCellAlignH: 'left',
495
- kpHeadHide: {
496
- 'id': true,
497
- },
662
+ kpHeadHide,
498
663
  kpHeadFixLeft: {
499
664
  'name': true,
500
665
  },
501
666
  defHeadMinWidth: 150,
502
667
  kpHeadWidth: {
503
668
  'name': 300,
669
+ 'description': 300,
504
670
  'belongGrups': 300,
505
671
  'crules': 300,
506
672
  'timeCreate': 220,
@@ -509,26 +675,18 @@ export default {
509
675
  kpHeadFilterType: {
510
676
  'id': 'text',
511
677
  'name': 'text',
512
- 'belongGrups': 'text',
513
678
  'description': 'text',
514
679
  'from': 'text',
680
+ 'belongGrups': 'text',
515
681
  'crules': 'text',
516
682
  'userId': 'text',
517
683
  'timeCreate': 'text',
518
684
  'userIdUpdate': 'text',
519
685
  'timeUpdate': 'text',
520
686
  },
521
- kpCellEditable: {
522
- 'name': true,
523
- 'description': true,
524
- 'from': true,
525
- },
526
- kpRowDrag: {
527
- 'name': true,
528
- },
529
- kpHeadCheckBox: {
530
- 'name': true,
531
- },
687
+ kpCellEditable,
688
+ kpRowDrag,
689
+ kpHeadCheckBox,
532
690
  kpHeadFilter: {
533
691
  'belongGrups': false,
534
692
  'crules': false,
@@ -634,6 +792,19 @@ export default {
634
792
 
635
793
  },
636
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
+
637
808
  genItems: function(pemis, kpUsePemiGrup) {
638
809
  // console.log('method genItems', pemis, kpUsePemiGrup)
639
810
 
@@ -949,7 +1120,10 @@ export default {
949
1120
  }
950
1121
 
951
1122
  //showVePemiBlngGrups
952
- vo.$dg.showVePemiBlngGrups(r)
1123
+ vo.$dg.showVePemiBlngGrups({
1124
+ isEditable: vo.isEditable,
1125
+ pemi: r,
1126
+ })
953
1127
  .then(() => {})
954
1128
  .catch(() => {})
955
1129
 
@@ -987,7 +1161,10 @@ export default {
987
1161
  }
988
1162
 
989
1163
  //showVeCrules
990
- vo.$dg.showVeCrules(r)
1164
+ vo.$dg.showVeCrules({
1165
+ isEditable: vo.isEditable,
1166
+ pemi: r,
1167
+ })
991
1168
  .then((crules) => {
992
1169
  // console.log('crules', crules)
993
1170