w-web-perm 1.0.24 → 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.
- package/dist/css/{app.f22995d1.css → app.d0e43dcc.css} +1 -1
- package/dist/index.tmp +9 -1
- package/dist/js/app-legacy.b0850281.js +2 -0
- package/dist/js/app-legacy.b0850281.js.map +1 -0
- package/dist/js/app.db01fef5.js +2 -0
- package/dist/js/app.db01fef5.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.0432e7bc.js +13 -0
- package/dist/js/chunk-vendors-legacy.0432e7bc.js.map +1 -0
- package/dist/js/chunk-vendors.0432e7bc.js +13 -0
- package/dist/js/chunk-vendors.0432e7bc.js.map +1 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +1 -1
- package/docs/WWebPerm.mjs.html +30 -2
- package/docs/index.html +1 -1
- package/package.json +5 -5
- package/public/index.html +8 -0
- package/server/WWebPerm.mjs +29 -1
- package/src/App.vue +6 -1
- package/src/components/Layout.vue +0 -11
- package/src/components/LayoutContent.vue +22 -22
- package/src/components/LayoutContentGrups.vue +378 -97
- package/src/components/LayoutContentPemis.vue +422 -100
- package/src/components/LayoutContentTargets.vue +225 -55
- package/src/components/LayoutContentUsers.vue +256 -69
- package/src/components/VeCgrups.vue +28 -35
- package/src/components/VeCpemis.vue +28 -35
- package/src/components/VeCrules.vue +25 -31
- package/src/components/VeGrupBlngUsers.vue +63 -36
- package/src/components/VePemiBlngGrups.vue +63 -36
- package/src/schema/tables/pemis.mjs +1 -1
- package/src/store/mutations.mjs +77 -10
- package/srv.mjs +9 -1
- package/tableTags-web-perm.json +1 -1
- package/dist/js/app-legacy.128a1ced.js +0 -2
- package/dist/js/app-legacy.128a1ced.js.map +0 -1
- package/dist/js/app.128a1ced.js +0 -2
- package/dist/js/app.128a1ced.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.d89048a8.js +0 -13
- package/dist/js/chunk-vendors-legacy.d89048a8.js.map +0 -1
- package/dist/js/chunk-vendors.d89048a8.js +0 -13
- package/dist/js/chunk-vendors.d89048a8.js.map +0 -1
- package/g.mjs +0 -0
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
style="height:100%;"
|
|
4
4
|
v-domresize
|
|
5
5
|
@domresize="resizePanel"
|
|
6
|
-
:
|
|
6
|
+
:changeParams="changeParams"
|
|
7
7
|
>
|
|
8
8
|
|
|
9
9
|
<div
|
|
10
|
-
style="
|
|
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="
|
|
22
|
+
:size="32"
|
|
23
23
|
></WIcon>
|
|
24
24
|
|
|
25
|
-
<div style="padding-left:
|
|
26
|
-
|
|
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
|
|
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>
|
|
88
|
+
|
|
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>
|
|
34
102
|
|
|
35
|
-
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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')
|
|
@@ -231,31 +368,98 @@ export default {
|
|
|
231
368
|
return rs
|
|
232
369
|
},
|
|
233
370
|
|
|
234
|
-
|
|
235
|
-
|
|
371
|
+
useGrups: function() {
|
|
372
|
+
let vo = this
|
|
236
373
|
|
|
374
|
+
//parse cpemis
|
|
375
|
+
let grups = map(vo.grups, (g) => {
|
|
376
|
+
|
|
377
|
+
//cloneDeep
|
|
378
|
+
g = cloneDeep(g)
|
|
379
|
+
|
|
380
|
+
//kpPemi
|
|
381
|
+
let kpPemi = {}
|
|
382
|
+
try {
|
|
383
|
+
// console.log('g.cpemis', g.cpemis)
|
|
384
|
+
kpPemi = JSON5.parse(g.cpemis)
|
|
385
|
+
}
|
|
386
|
+
catch (err) {}
|
|
387
|
+
|
|
388
|
+
//save kpPemi
|
|
389
|
+
g.kpPemi = kpPemi
|
|
390
|
+
|
|
391
|
+
return g
|
|
392
|
+
})
|
|
393
|
+
// console.log('grups', grups)
|
|
394
|
+
|
|
395
|
+
return grups
|
|
396
|
+
},
|
|
397
|
+
|
|
398
|
+
kpPemiGrup: function() {
|
|
237
399
|
let vo = this
|
|
238
400
|
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
401
|
+
//kp
|
|
402
|
+
let kp = {}
|
|
403
|
+
each(vo.useGrups, (g) => {
|
|
404
|
+
each(g.kpPemi, (v, k) => {
|
|
405
|
+
let isActive = get(v, 'isActive', '')
|
|
406
|
+
if (isActive !== 'y') {
|
|
407
|
+
return true //跳出換下一個
|
|
408
|
+
}
|
|
409
|
+
if (!haskey(kp, k)) {
|
|
410
|
+
kp[k] = []
|
|
411
|
+
}
|
|
412
|
+
kp[k].push({
|
|
413
|
+
grup: g,
|
|
414
|
+
pemi: v,
|
|
415
|
+
})
|
|
416
|
+
})
|
|
417
|
+
})
|
|
418
|
+
// console.log('kp', kp)
|
|
243
419
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
let grups = cloneDeep(vo.grups)
|
|
420
|
+
return kp
|
|
421
|
+
},
|
|
247
422
|
|
|
248
|
-
|
|
249
|
-
let
|
|
423
|
+
kpUsePemiGrup: function() {
|
|
424
|
+
let vo = this
|
|
425
|
+
|
|
426
|
+
//_kp
|
|
427
|
+
let _kp = {}
|
|
428
|
+
each(vo.pemis, (v, k) => {
|
|
429
|
+
_kp[v.name] = true
|
|
430
|
+
})
|
|
431
|
+
// console.log('_kp', _kp)
|
|
432
|
+
|
|
433
|
+
//kp
|
|
434
|
+
let kp = {}
|
|
435
|
+
each(vo.kpPemiGrup, (v, k) => {
|
|
436
|
+
if (haskey(_kp, k)) {
|
|
437
|
+
kp[k] = v
|
|
438
|
+
}
|
|
439
|
+
})
|
|
440
|
+
// console.log('kp', kp)
|
|
441
|
+
|
|
442
|
+
return kp
|
|
443
|
+
},
|
|
250
444
|
|
|
251
|
-
|
|
252
|
-
//
|
|
445
|
+
changeParams: function() {
|
|
446
|
+
// console.log('computed changeParams')
|
|
447
|
+
|
|
448
|
+
let vo = this
|
|
449
|
+
|
|
450
|
+
//trigger
|
|
451
|
+
let isEditable = vo.isEditable
|
|
452
|
+
let pemis = cloneDeep(vo.pemis)
|
|
453
|
+
let kpUsePemiGrup = cloneDeep(vo.kpUsePemiGrup)
|
|
454
|
+
|
|
455
|
+
//items
|
|
456
|
+
let items = vo.genItems(pemis, kpUsePemiGrup)
|
|
253
457
|
|
|
254
458
|
//save
|
|
255
459
|
vo.items = items
|
|
256
460
|
|
|
257
461
|
//genOpt
|
|
258
|
-
vo.genOpt()
|
|
462
|
+
vo.genOpt({ isEditable })
|
|
259
463
|
|
|
260
464
|
//firstLoading
|
|
261
465
|
vo.firstLoading = false
|
|
@@ -344,6 +548,25 @@ export default {
|
|
|
344
548
|
return c
|
|
345
549
|
},
|
|
346
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
|
+
|
|
347
570
|
},
|
|
348
571
|
methods: {
|
|
349
572
|
|
|
@@ -368,6 +591,16 @@ export default {
|
|
|
368
591
|
|
|
369
592
|
},
|
|
370
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
|
+
|
|
371
604
|
genOpt: function() {
|
|
372
605
|
// console.log('methods genOpt')
|
|
373
606
|
|
|
@@ -381,32 +614,39 @@ export default {
|
|
|
381
614
|
if (size(vo.items) > 0) {
|
|
382
615
|
|
|
383
616
|
//ks
|
|
384
|
-
let ks =
|
|
385
|
-
'id',
|
|
386
|
-
'name',
|
|
387
|
-
'belongGrups',
|
|
388
|
-
'description',
|
|
389
|
-
'from',
|
|
390
|
-
'crules',
|
|
391
|
-
'userId',
|
|
392
|
-
'timeCreate',
|
|
393
|
-
'userIdUpdate',
|
|
394
|
-
'timeUpdate',
|
|
395
|
-
]
|
|
617
|
+
let ks = vo.tabKeys
|
|
396
618
|
// console.log('ks', ks)
|
|
397
619
|
|
|
398
620
|
//kpHead
|
|
399
|
-
let kpHead =
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
+
})
|
|
410
650
|
}
|
|
411
651
|
|
|
412
652
|
//opt
|
|
@@ -416,17 +656,17 @@ export default {
|
|
|
416
656
|
keys: ks,
|
|
417
657
|
kpHead,
|
|
418
658
|
// autoFitColumn: true,
|
|
659
|
+
defCellEditable: vo.isEditable,
|
|
419
660
|
defHeadFilter: true,
|
|
420
661
|
defCellAlignH: 'left',
|
|
421
|
-
kpHeadHide
|
|
422
|
-
'id': true,
|
|
423
|
-
},
|
|
662
|
+
kpHeadHide,
|
|
424
663
|
kpHeadFixLeft: {
|
|
425
664
|
'name': true,
|
|
426
665
|
},
|
|
427
666
|
defHeadMinWidth: 150,
|
|
428
667
|
kpHeadWidth: {
|
|
429
668
|
'name': 300,
|
|
669
|
+
'description': 300,
|
|
430
670
|
'belongGrups': 300,
|
|
431
671
|
'crules': 300,
|
|
432
672
|
'timeCreate': 220,
|
|
@@ -435,26 +675,18 @@ export default {
|
|
|
435
675
|
kpHeadFilterType: {
|
|
436
676
|
'id': 'text',
|
|
437
677
|
'name': 'text',
|
|
438
|
-
'belongGrups': 'text',
|
|
439
678
|
'description': 'text',
|
|
440
679
|
'from': 'text',
|
|
680
|
+
'belongGrups': 'text',
|
|
441
681
|
'crules': 'text',
|
|
442
682
|
'userId': 'text',
|
|
443
683
|
'timeCreate': 'text',
|
|
444
684
|
'userIdUpdate': 'text',
|
|
445
685
|
'timeUpdate': 'text',
|
|
446
686
|
},
|
|
447
|
-
kpCellEditable
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
'from': true,
|
|
451
|
-
},
|
|
452
|
-
kpRowDrag: {
|
|
453
|
-
'name': true,
|
|
454
|
-
},
|
|
455
|
-
kpHeadCheckBox: {
|
|
456
|
-
'name': true,
|
|
457
|
-
},
|
|
687
|
+
kpCellEditable,
|
|
688
|
+
kpRowDrag,
|
|
689
|
+
kpHeadCheckBox,
|
|
458
690
|
kpHeadFilter: {
|
|
459
691
|
'belongGrups': false,
|
|
460
692
|
'crules': false,
|
|
@@ -515,7 +747,7 @@ export default {
|
|
|
515
747
|
//因stopPropagation只吃掉訊息, 原本focus會處於原本可focus的cell, 再重複點時會於前個focus的cell出現highlight邊框, 故再多使用preventDefault阻止瀏覽器預設行為, 此等同於return false
|
|
516
748
|
let t = `
|
|
517
749
|
<div onclick="event.stopPropagation();event.preventDefault();" onmousedown="event.stopPropagation();event.preventDefault();">
|
|
518
|
-
<button style="width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" onclick="$vo.$dg.showVeCrulesById('${id}')">${vo
|
|
750
|
+
<button style="width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;" onclick="$vo.$dg.showVeCrulesById('${id}')">${vo.getCrulesText(v)}</button>
|
|
519
751
|
</div>
|
|
520
752
|
`
|
|
521
753
|
|
|
@@ -560,45 +792,31 @@ export default {
|
|
|
560
792
|
|
|
561
793
|
},
|
|
562
794
|
|
|
563
|
-
|
|
564
|
-
// console.log('method addGrups', pemis, grups)
|
|
565
|
-
|
|
795
|
+
toggleTabKeys: function() {
|
|
566
796
|
let vo = this
|
|
567
797
|
|
|
568
|
-
//
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
g.kpPemi = kpPemi
|
|
572
|
-
return g
|
|
573
|
-
})
|
|
574
|
-
// console.log('users', users)
|
|
798
|
+
//cmp
|
|
799
|
+
let cmp = get(vo, '$refs.rftable.$refs.$self')
|
|
800
|
+
// console.log('cmp', cmp)
|
|
575
801
|
|
|
576
|
-
//
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
}
|
|
587
|
-
kp[k].push({
|
|
588
|
-
grup: g,
|
|
589
|
-
pemi: v,
|
|
590
|
-
})
|
|
591
|
-
})
|
|
592
|
-
})
|
|
593
|
-
// console.log('kp', kp)
|
|
802
|
+
//showKeys
|
|
803
|
+
cmp.showKeys(vo.tabKeysShow)
|
|
804
|
+
// console.log('tabKeysShow', vo.tabKeysShow)
|
|
805
|
+
|
|
806
|
+
},
|
|
807
|
+
|
|
808
|
+
genItems: function(pemis, kpUsePemiGrup) {
|
|
809
|
+
// console.log('method genItems', pemis, kpUsePemiGrup)
|
|
810
|
+
|
|
811
|
+
let vo = this
|
|
594
812
|
|
|
595
813
|
//items
|
|
596
814
|
let items = map(pemis, (p) => {
|
|
597
815
|
|
|
598
816
|
//gs
|
|
599
817
|
let gs = []
|
|
600
|
-
if (haskey(
|
|
601
|
-
gs =
|
|
818
|
+
if (haskey(kpUsePemiGrup, p.name)) {
|
|
819
|
+
gs = kpUsePemiGrup[p.name]
|
|
602
820
|
}
|
|
603
821
|
// console.log('gs', gs)
|
|
604
822
|
|
|
@@ -620,6 +838,7 @@ export default {
|
|
|
620
838
|
//save belongGrups, gs
|
|
621
839
|
p.belongGrups = belongGrups
|
|
622
840
|
p.gs = gs
|
|
841
|
+
// console.log('p', p)
|
|
623
842
|
|
|
624
843
|
return p
|
|
625
844
|
})
|
|
@@ -642,12 +861,22 @@ export default {
|
|
|
642
861
|
//r
|
|
643
862
|
let r = vo.$ds.pemis.funNew()
|
|
644
863
|
r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('pemiAddNameNew'))
|
|
864
|
+
// r.crules = ''
|
|
645
865
|
r.userId = `{${vo.$t('pemiAddIdNew')}}`
|
|
646
866
|
r.timeCreate = `{${vo.$t('pemiAddIdNew')}}`
|
|
647
867
|
r.userIdUpdate = `{${vo.$t('pemiAddIdNew')}}`
|
|
648
868
|
r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`
|
|
649
869
|
// console.log('r', r)
|
|
650
870
|
|
|
871
|
+
//belongGrups, gs
|
|
872
|
+
let gs = []
|
|
873
|
+
let belongGrups = vo.$t('pemiBlngRnderNoGrup')
|
|
874
|
+
|
|
875
|
+
//save belongGrups, gs
|
|
876
|
+
r.belongGrups = belongGrups
|
|
877
|
+
r.gs = gs
|
|
878
|
+
// console.log('r', r)
|
|
879
|
+
|
|
651
880
|
//添加至最首
|
|
652
881
|
rows = [
|
|
653
882
|
r,
|
|
@@ -714,6 +943,15 @@ export default {
|
|
|
714
943
|
r.timeUpdate = `{${vo.$t('pemiAddIdNew')}}`
|
|
715
944
|
// console.log('r', r)
|
|
716
945
|
|
|
946
|
+
//belongGrups, gs
|
|
947
|
+
let gs = []
|
|
948
|
+
let belongGrups = vo.$t('pemiBlngRnderNoGrup')
|
|
949
|
+
|
|
950
|
+
//save belongGrups, gs
|
|
951
|
+
r.belongGrups = belongGrups
|
|
952
|
+
r.gs = gs
|
|
953
|
+
// console.log('r', r)
|
|
954
|
+
|
|
717
955
|
//添加至最首
|
|
718
956
|
rows = [
|
|
719
957
|
r,
|
|
@@ -772,6 +1010,83 @@ export default {
|
|
|
772
1010
|
|
|
773
1011
|
},
|
|
774
1012
|
|
|
1013
|
+
fltKpRule: function(kp) {
|
|
1014
|
+
// console.log('fltKpRule', kp)
|
|
1015
|
+
|
|
1016
|
+
let vo = this
|
|
1017
|
+
|
|
1018
|
+
//_kp
|
|
1019
|
+
let _kp = {}
|
|
1020
|
+
each(vo.targets, (v, k) => {
|
|
1021
|
+
_kp[v.id] = true //管控對象須使用id
|
|
1022
|
+
})
|
|
1023
|
+
// console.log('_kp', _kp)
|
|
1024
|
+
|
|
1025
|
+
//kpt
|
|
1026
|
+
let kpt = {}
|
|
1027
|
+
each(kp, (v, k) => {
|
|
1028
|
+
if (haskey(_kp, k)) {
|
|
1029
|
+
kpt[k] = v
|
|
1030
|
+
}
|
|
1031
|
+
})
|
|
1032
|
+
|
|
1033
|
+
return kpt
|
|
1034
|
+
},
|
|
1035
|
+
|
|
1036
|
+
getCrulesText: function(crules) {
|
|
1037
|
+
// console.log('method getCrulesText', crules)
|
|
1038
|
+
|
|
1039
|
+
let vo = this
|
|
1040
|
+
|
|
1041
|
+
//kpRule
|
|
1042
|
+
let kpRule = {}
|
|
1043
|
+
try {
|
|
1044
|
+
// console.log('crules', crules)
|
|
1045
|
+
kpRule = JSON5.parse(crules)
|
|
1046
|
+
}
|
|
1047
|
+
catch (err) {}
|
|
1048
|
+
// console.log('kpRule', kpRule)
|
|
1049
|
+
|
|
1050
|
+
//fltKpRule
|
|
1051
|
+
kpRule = vo.fltKpRule(kpRule)
|
|
1052
|
+
// console.log('kpRule(fltKpRule)', kpRule)
|
|
1053
|
+
|
|
1054
|
+
//vs
|
|
1055
|
+
let vs = []
|
|
1056
|
+
each(kpRule, (v, k) => {
|
|
1057
|
+
// console.log(k, 'v', v)
|
|
1058
|
+
|
|
1059
|
+
//isActive
|
|
1060
|
+
let isActive = v //crules各值為直接儲存y或n
|
|
1061
|
+
if (isActive !== 'y') {
|
|
1062
|
+
return true //跳出換下一個
|
|
1063
|
+
}
|
|
1064
|
+
// console.log(k, '_isActive', _isActive)
|
|
1065
|
+
|
|
1066
|
+
//push
|
|
1067
|
+
vs.push(k)
|
|
1068
|
+
|
|
1069
|
+
})
|
|
1070
|
+
|
|
1071
|
+
//crulesText
|
|
1072
|
+
let crulesText = vo.$t('pemiRnderCrulesNoRule')
|
|
1073
|
+
let t = vo.$t('pemiRnderCrulesHasNRule')
|
|
1074
|
+
let n = size(vs)
|
|
1075
|
+
if (n > 0) {
|
|
1076
|
+
t = t.replace('{n}', n)
|
|
1077
|
+
// if (n === 1) {
|
|
1078
|
+
// t = t.replace('{nms}', `(${vs[0]})`)
|
|
1079
|
+
// }
|
|
1080
|
+
// else {
|
|
1081
|
+
// t = t.replace('{nms}', '')
|
|
1082
|
+
// }
|
|
1083
|
+
t = t.replace('{nms}', '') //管控對象id太長, 顯示按鈕預設寬度小, 故皆僅顯示數量
|
|
1084
|
+
crulesText = t
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
return crulesText
|
|
1088
|
+
},
|
|
1089
|
+
|
|
775
1090
|
showVePemiBlngGrupsById: function(id) {
|
|
776
1091
|
// console.log('method showVePemiBlngGrupsById', id)
|
|
777
1092
|
|
|
@@ -796,6 +1111,7 @@ export default {
|
|
|
796
1111
|
return false //跳出
|
|
797
1112
|
}
|
|
798
1113
|
})
|
|
1114
|
+
// console.log('r', r)
|
|
799
1115
|
|
|
800
1116
|
//check
|
|
801
1117
|
if (!iseobj(r)) {
|
|
@@ -804,7 +1120,10 @@ export default {
|
|
|
804
1120
|
}
|
|
805
1121
|
|
|
806
1122
|
//showVePemiBlngGrups
|
|
807
|
-
vo.$dg.showVePemiBlngGrups(
|
|
1123
|
+
vo.$dg.showVePemiBlngGrups({
|
|
1124
|
+
isEditable: vo.isEditable,
|
|
1125
|
+
pemi: r,
|
|
1126
|
+
})
|
|
808
1127
|
.then(() => {})
|
|
809
1128
|
.catch(() => {})
|
|
810
1129
|
|
|
@@ -842,7 +1161,10 @@ export default {
|
|
|
842
1161
|
}
|
|
843
1162
|
|
|
844
1163
|
//showVeCrules
|
|
845
|
-
vo.$dg.showVeCrules(
|
|
1164
|
+
vo.$dg.showVeCrules({
|
|
1165
|
+
isEditable: vo.isEditable,
|
|
1166
|
+
pemi: r,
|
|
1167
|
+
})
|
|
846
1168
|
.then((crules) => {
|
|
847
1169
|
// console.log('crules', crules)
|
|
848
1170
|
|