w-web-perm 1.0.44 → 1.0.46
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/.github/workflows/ci-test.yml +1 -1
- package/db/wperm/grups/data.mdb +0 -0
- package/db/wperm/grups/lock.mdb +0 -0
- package/db/wperm/pemis/data.mdb +0 -0
- package/db/wperm/pemis/lock.mdb +0 -0
- package/db/wperm/targets/data.mdb +0 -0
- package/db/wperm/targets/lock.mdb +0 -0
- package/db/wperm/users/data.mdb +0 -0
- package/db/wperm/users/lock.mdb +0 -0
- package/dist/css/app.30e81bfe.css +1 -0
- package/dist/css/chunk-vendors.f149e124.css +1 -0
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.7a0dda14.js +1 -0
- package/dist/js/app.7a0dda14.js +1 -0
- package/dist/js/chunk-vendors-legacy.e8703728.js +21 -0
- package/dist/js/chunk-vendors.e8703728.js +21 -0
- package/dist/w-web-perm.umd.js +2 -2
- package/dist/w-web-perm.umd.js.map +1 -1
- package/docs/WWebPerm.html +2 -2
- package/docs/WWebPerm.mjs.html +9 -5
- package/docs/index.html +1 -1
- package/g.initialData.mjs +3 -3
- package/g.provideUsers.mjs +3 -3
- package/package.json +9 -8
- package/server/WWebPerm.mjs +8 -4
- package/{src/plugins/mLang.mjs → server/procLang.mjs} +837 -754
- package/src/components/LayoutContentGrups.vue +26 -62
- package/src/components/LayoutContentPemis.vue +26 -62
- package/src/components/LayoutContentTargets.vue +16 -45
- package/src/components/LayoutContentUsers.vue +30 -90
- package/src/components/VeCgrups.vue +15 -46
- package/src/components/VeCpemis.vue +15 -46
- package/src/components/VeCrules.vue +11 -26
- package/src/components/VeGrupBlngUsers.vue +26 -72
- package/src/components/VePemiBlngGrups.vue +26 -72
- package/src/plugins/mUI.mjs +5 -60
- package/src/schema/tables/users.mjs +3 -3
- package/tableTags.json +1 -1
- package/test/getUserRules.test.mjs +899 -0
- package/dist/css/app.5eabcb89.css +0 -1
- package/dist/js/app-legacy.d506ca61.js +0 -1
- package/dist/js/app.d506ca61.js +0 -1
- package/dist/js/chunk-vendors-legacy.18b85e4c.js +0 -14
- package/dist/js/chunk-vendors.18b85e4c.js +0 -14
- package/test/all.test.mjs +0 -10
|
@@ -116,13 +116,22 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
|
|
118
118
|
<template v-if="items">
|
|
119
|
-
<
|
|
119
|
+
<WAggridVue
|
|
120
120
|
ref="rftable"
|
|
121
121
|
:style="`width:100%;`"
|
|
122
122
|
:height="contentHeight"
|
|
123
123
|
:opt="opt"
|
|
124
124
|
>
|
|
125
|
-
|
|
125
|
+
<template v-slot:cell-render="props">
|
|
126
|
+
<span v-if="props.key==='name'">{{ props.value }}</span>
|
|
127
|
+
<select v-else-if="props.key==='mode'" @change="showVeCgrupsToggleItemModeByName(props.row.name, $event.target.value)" :disabled="!isEditable">
|
|
128
|
+
<option value="OR" :selected="props.row.mode === 'OR'">OR</option>
|
|
129
|
+
<option value="AND" :selected="props.row.mode === 'AND'">AND</option>
|
|
130
|
+
</select>
|
|
131
|
+
<input v-else-if="props.key==='enable'" type="checkbox" :checked="props.value === 'y'" @click="showVeCgrupsToggleItemEnableByName(props.row.name)" :disabled="!isEditable" />
|
|
132
|
+
<span v-else>{{ props.value }}</span>
|
|
133
|
+
</template>
|
|
134
|
+
</WAggridVue>
|
|
126
135
|
</template>
|
|
127
136
|
|
|
128
137
|
<div
|
|
@@ -155,14 +164,14 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
155
164
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
156
165
|
import WDialog from 'w-component-vue/src/components/WDialog.vue'
|
|
157
166
|
import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
|
|
158
|
-
import
|
|
167
|
+
import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
|
|
159
168
|
|
|
160
169
|
|
|
161
170
|
export default {
|
|
162
171
|
components: {
|
|
163
172
|
WDialog,
|
|
164
173
|
WButtonCircle,
|
|
165
|
-
|
|
174
|
+
WAggridVue,
|
|
166
175
|
},
|
|
167
176
|
props: {
|
|
168
177
|
},
|
|
@@ -380,46 +389,6 @@ export default {
|
|
|
380
389
|
// kpHeadCheckBox: {
|
|
381
390
|
// 'name': true,
|
|
382
391
|
// },
|
|
383
|
-
kpCellRender: {
|
|
384
|
-
'name': (v, k, r) => {
|
|
385
|
-
// console.log('kpCellRender name', v)
|
|
386
|
-
|
|
387
|
-
return v
|
|
388
|
-
},
|
|
389
|
-
'mode': (v, k, r) => {
|
|
390
|
-
// console.log('kpCellRender mode', v)
|
|
391
|
-
|
|
392
|
-
//name
|
|
393
|
-
let name = get(r, 'name', '')
|
|
394
|
-
// console.log('name', name, k, r)
|
|
395
|
-
|
|
396
|
-
//mode
|
|
397
|
-
let mode = get(r, 'mode', '')
|
|
398
|
-
// console.log('mode', mode, k, r)
|
|
399
|
-
|
|
400
|
-
let t = `
|
|
401
|
-
<select onchange="$vo.$dg.showVeCgrupsToggleItemModeByName('${name}',this.value)" ${vo.isEditable ? '' : 'disabled'}>
|
|
402
|
-
<option value="OR" ${mode === 'OR' ? 'selected' : ''}>OR</option>
|
|
403
|
-
<option value="AND" ${mode === 'AND' ? 'selected' : ''}>AND</option>
|
|
404
|
-
</select>
|
|
405
|
-
`
|
|
406
|
-
|
|
407
|
-
return t
|
|
408
|
-
},
|
|
409
|
-
'enable': (v, k, r) => {
|
|
410
|
-
// console.log('kpCellRender enable', v, k, r)
|
|
411
|
-
|
|
412
|
-
//name
|
|
413
|
-
let name = get(r, 'name', '')
|
|
414
|
-
// console.log('name', name, k, r)
|
|
415
|
-
|
|
416
|
-
let t = `
|
|
417
|
-
<input type="checkbox" ${v === 'y' ? 'checked' : ''} onclick="$vo.$dg.showVeCgrupsToggleItemEnableByName('${name}')" ${vo.isEditable ? '' : 'disabled'} />
|
|
418
|
-
`
|
|
419
|
-
|
|
420
|
-
return t
|
|
421
|
-
},
|
|
422
|
-
},
|
|
423
392
|
rowsChange: (rs) => {
|
|
424
393
|
// console.log('rowsChange', rs)
|
|
425
394
|
// console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))
|
|
@@ -491,7 +460,7 @@ export default {
|
|
|
491
460
|
let vo = this
|
|
492
461
|
|
|
493
462
|
//cmp
|
|
494
|
-
let cmp = get(vo, '$refs.rftable
|
|
463
|
+
let cmp = get(vo, '$refs.rftable')
|
|
495
464
|
// console.log('cmp', cmp)
|
|
496
465
|
|
|
497
466
|
//refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據
|
|
@@ -503,7 +472,7 @@ export default {
|
|
|
503
472
|
let vo = this
|
|
504
473
|
|
|
505
474
|
//cmp
|
|
506
|
-
let cmp = get(vo, '$refs.rftable
|
|
475
|
+
let cmp = get(vo, '$refs.rftable')
|
|
507
476
|
// console.log('cmp', cmp)
|
|
508
477
|
|
|
509
478
|
//getDisplayData
|
|
@@ -116,13 +116,22 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
|
|
118
118
|
<template v-if="items">
|
|
119
|
-
<
|
|
119
|
+
<WAggridVue
|
|
120
120
|
ref="rftable"
|
|
121
121
|
:style="`width:100%;`"
|
|
122
122
|
:height="contentHeight"
|
|
123
123
|
:opt="opt"
|
|
124
124
|
>
|
|
125
|
-
|
|
125
|
+
<template v-slot:cell-render="props">
|
|
126
|
+
<span v-if="props.key==='name'">{{ props.value }}</span>
|
|
127
|
+
<select v-else-if="props.key==='mode'" @change="showVeCpemisToggleItemModeByName(props.row.name, $event.target.value)" :disabled="!isEditable">
|
|
128
|
+
<option value="OR" :selected="props.row.mode === 'OR'">OR</option>
|
|
129
|
+
<option value="AND" :selected="props.row.mode === 'AND'">AND</option>
|
|
130
|
+
</select>
|
|
131
|
+
<input v-else-if="props.key==='enable'" type="checkbox" :checked="props.value === 'y'" @click="showVeCpemisToggleItemEnableByName(props.row.name)" :disabled="!isEditable" />
|
|
132
|
+
<span v-else>{{ props.value }}</span>
|
|
133
|
+
</template>
|
|
134
|
+
</WAggridVue>
|
|
126
135
|
</template>
|
|
127
136
|
|
|
128
137
|
<div
|
|
@@ -155,14 +164,14 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
155
164
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
156
165
|
import WDialog from 'w-component-vue/src/components/WDialog.vue'
|
|
157
166
|
import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
|
|
158
|
-
import
|
|
167
|
+
import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
|
|
159
168
|
|
|
160
169
|
|
|
161
170
|
export default {
|
|
162
171
|
components: {
|
|
163
172
|
WDialog,
|
|
164
173
|
WButtonCircle,
|
|
165
|
-
|
|
174
|
+
WAggridVue,
|
|
166
175
|
},
|
|
167
176
|
props: {
|
|
168
177
|
},
|
|
@@ -380,46 +389,6 @@ export default {
|
|
|
380
389
|
// kpHeadCheckBox: {
|
|
381
390
|
// 'name': true,
|
|
382
391
|
// },
|
|
383
|
-
kpCellRender: {
|
|
384
|
-
'name': (v, k, r) => {
|
|
385
|
-
// console.log('kpCellRender name', v)
|
|
386
|
-
|
|
387
|
-
return v
|
|
388
|
-
},
|
|
389
|
-
'mode': (v, k, r) => {
|
|
390
|
-
// console.log('kpCellRender mode', v)
|
|
391
|
-
|
|
392
|
-
//name
|
|
393
|
-
let name = get(r, 'name', '')
|
|
394
|
-
// console.log('name', name, k, r)
|
|
395
|
-
|
|
396
|
-
//mode
|
|
397
|
-
let mode = get(r, 'mode', '')
|
|
398
|
-
// console.log('mode', mode, k, r)
|
|
399
|
-
|
|
400
|
-
let t = `
|
|
401
|
-
<select onchange="$vo.$dg.showVeCpemisToggleItemModeByName('${name}',this.value)" ${vo.isEditable ? '' : 'disabled'}>
|
|
402
|
-
<option value="OR" ${mode === 'OR' ? 'selected' : ''}>OR</option>
|
|
403
|
-
<option value="AND" ${mode === 'AND' ? 'selected' : ''}>AND</option>
|
|
404
|
-
</select>
|
|
405
|
-
`
|
|
406
|
-
|
|
407
|
-
return t
|
|
408
|
-
},
|
|
409
|
-
'enable': (v, k, r) => {
|
|
410
|
-
// console.log('kpCellRender enable', v, k, r)
|
|
411
|
-
|
|
412
|
-
//name
|
|
413
|
-
let name = get(r, 'name', '')
|
|
414
|
-
// console.log('name', name, k, r)
|
|
415
|
-
|
|
416
|
-
let t = `
|
|
417
|
-
<input type="checkbox" ${v === 'y' ? 'checked' : ''} onclick="$vo.$dg.showVeCpemisToggleItemEnableByName('${name}')" ${vo.isEditable ? '' : 'disabled'} />
|
|
418
|
-
`
|
|
419
|
-
|
|
420
|
-
return t
|
|
421
|
-
},
|
|
422
|
-
},
|
|
423
392
|
rowsChange: (rs) => {
|
|
424
393
|
// console.log('rowsChange', rs)
|
|
425
394
|
// console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))
|
|
@@ -491,7 +460,7 @@ export default {
|
|
|
491
460
|
let vo = this
|
|
492
461
|
|
|
493
462
|
//cmp
|
|
494
|
-
let cmp = get(vo, '$refs.rftable
|
|
463
|
+
let cmp = get(vo, '$refs.rftable')
|
|
495
464
|
// console.log('cmp', cmp)
|
|
496
465
|
|
|
497
466
|
//refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據
|
|
@@ -503,7 +472,7 @@ export default {
|
|
|
503
472
|
let vo = this
|
|
504
473
|
|
|
505
474
|
//cmp
|
|
506
|
-
let cmp = get(vo, '$refs.rftable
|
|
475
|
+
let cmp = get(vo, '$refs.rftable')
|
|
507
476
|
// console.log('cmp', cmp)
|
|
508
477
|
|
|
509
478
|
//getDisplayData
|
|
@@ -116,13 +116,18 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
|
|
118
118
|
<template v-if="items">
|
|
119
|
-
<
|
|
119
|
+
<WAggridVue
|
|
120
120
|
ref="rftable"
|
|
121
121
|
:style="`width:100%;`"
|
|
122
122
|
:height="contentHeight"
|
|
123
123
|
:opt="opt"
|
|
124
124
|
>
|
|
125
|
-
|
|
125
|
+
<template v-slot:cell-render="props">
|
|
126
|
+
<span v-if="props.key==='id'">{{ props.value }}</span>
|
|
127
|
+
<input v-else-if="props.key==='enable'" type="checkbox" :checked="props.value === 'y'" @click="toggleItemEnableById(props.row.id)" :disabled="!isEditable" />
|
|
128
|
+
<span v-else>{{ props.value }}</span>
|
|
129
|
+
</template>
|
|
130
|
+
</WAggridVue>
|
|
126
131
|
</template>
|
|
127
132
|
|
|
128
133
|
<div
|
|
@@ -155,14 +160,14 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
155
160
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
156
161
|
import WDialog from 'w-component-vue/src/components/WDialog.vue'
|
|
157
162
|
import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
|
|
158
|
-
import
|
|
163
|
+
import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
|
|
159
164
|
|
|
160
165
|
|
|
161
166
|
export default {
|
|
162
167
|
components: {
|
|
163
168
|
WDialog,
|
|
164
169
|
WButtonCircle,
|
|
165
|
-
|
|
170
|
+
WAggridVue,
|
|
166
171
|
},
|
|
167
172
|
props: {
|
|
168
173
|
},
|
|
@@ -374,26 +379,6 @@ export default {
|
|
|
374
379
|
// kpHeadCheckBox: {
|
|
375
380
|
// 'id': true,
|
|
376
381
|
// },
|
|
377
|
-
kpCellRender: {
|
|
378
|
-
'id': (v, k, r) => {
|
|
379
|
-
// console.log('kpCellRender id', v)
|
|
380
|
-
|
|
381
|
-
return v
|
|
382
|
-
},
|
|
383
|
-
'enable': (v, k, r) => {
|
|
384
|
-
// console.log('kpCellRender enable', v, k, r)
|
|
385
|
-
|
|
386
|
-
//id
|
|
387
|
-
let id = get(r, 'id', '')
|
|
388
|
-
// console.log('id', id, k, r)
|
|
389
|
-
|
|
390
|
-
let t = `
|
|
391
|
-
<input type="checkbox" ${v === 'y' ? 'checked' : ''} onclick="$vo.$dg.toggleItemEnableById('${id}')" ${vo.isEditable ? '' : 'disabled'} />
|
|
392
|
-
`
|
|
393
|
-
|
|
394
|
-
return t
|
|
395
|
-
},
|
|
396
|
-
},
|
|
397
382
|
rowsChange: (rs) => {
|
|
398
383
|
// console.log('rowsChange', rs)
|
|
399
384
|
// console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))
|
|
@@ -465,7 +450,7 @@ export default {
|
|
|
465
450
|
let vo = this
|
|
466
451
|
|
|
467
452
|
//cmp
|
|
468
|
-
let cmp = get(vo, '$refs.rftable
|
|
453
|
+
let cmp = get(vo, '$refs.rftable')
|
|
469
454
|
// console.log('cmp', cmp)
|
|
470
455
|
|
|
471
456
|
//refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據
|
|
@@ -477,7 +462,7 @@ export default {
|
|
|
477
462
|
let vo = this
|
|
478
463
|
|
|
479
464
|
//cmp
|
|
480
|
-
let cmp = get(vo, '$refs.rftable
|
|
465
|
+
let cmp = get(vo, '$refs.rftable')
|
|
481
466
|
// console.log('cmp', cmp)
|
|
482
467
|
|
|
483
468
|
//getDisplayData
|
|
@@ -129,13 +129,33 @@
|
|
|
129
129
|
</div>
|
|
130
130
|
|
|
131
131
|
<template v-if="items">
|
|
132
|
-
<
|
|
132
|
+
<WAggridVue
|
|
133
133
|
ref="rftable"
|
|
134
134
|
:style="`width:100%;`"
|
|
135
135
|
:height="contentHeight"
|
|
136
136
|
:opt="opt"
|
|
137
137
|
>
|
|
138
|
-
|
|
138
|
+
<template v-slot:cell-render="props">
|
|
139
|
+
<template v-if="props.key==='grupsNames'">
|
|
140
|
+
<span v-for="(item, idx) in props.row.grups" :key="idx" style="display:inline-block; line-height:20px; height:20px;">
|
|
141
|
+
<div style="display:flex;">
|
|
142
|
+
<div :style="'padding:0px 5px; border-top-left-radius:4px; border-bottom-left-radius:4px; ' + (item.enable === 'y' ? 'border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;' : 'border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;')">
|
|
143
|
+
{{ item.mode }}
|
|
144
|
+
</div>
|
|
145
|
+
<div :style="'padding:0px 5px; border-top-right-radius:4px; border-bottom-right-radius:4px; ' + (item.enable === 'y' ? '_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;' : '_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;')">
|
|
146
|
+
{{ item.name }}
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</span>
|
|
150
|
+
</template>
|
|
151
|
+
<select v-else-if="props.key==='mode'" @change="showVeGrupBlngUsersToggleItemModeByName(props.row.name, $event.target.value)" :disabled="!isEditable">
|
|
152
|
+
<option value="OR" :selected="props.row.mode === 'OR'">OR</option>
|
|
153
|
+
<option value="AND" :selected="props.row.mode === 'AND'">AND</option>
|
|
154
|
+
</select>
|
|
155
|
+
<input v-else-if="props.key==='enable'" type="checkbox" :checked="props.value === 'y'" @click="showVeGrupBlngUsersToggleItemEnableByName(props.row.name)" :disabled="!isEditable" />
|
|
156
|
+
<span v-else>{{ props.value }}</span>
|
|
157
|
+
</template>
|
|
158
|
+
</WAggridVue>
|
|
139
159
|
</template>
|
|
140
160
|
|
|
141
161
|
<div
|
|
@@ -171,14 +191,14 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
171
191
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
172
192
|
import WDialog from 'w-component-vue/src/components/WDialog.vue'
|
|
173
193
|
import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
|
|
174
|
-
import
|
|
194
|
+
import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
|
|
175
195
|
|
|
176
196
|
|
|
177
197
|
export default {
|
|
178
198
|
components: {
|
|
179
199
|
WDialog,
|
|
180
200
|
WButtonCircle,
|
|
181
|
-
|
|
201
|
+
WAggridVue,
|
|
182
202
|
},
|
|
183
203
|
props: {
|
|
184
204
|
},
|
|
@@ -410,72 +430,6 @@ export default {
|
|
|
410
430
|
kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟
|
|
411
431
|
'grupsNames': false,
|
|
412
432
|
},
|
|
413
|
-
kpCellRender: {
|
|
414
|
-
'grupsNames': (v, k, r) => {
|
|
415
|
-
// console.log('kpCellRender grupsNames', v, k, r)
|
|
416
|
-
|
|
417
|
-
let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`
|
|
418
|
-
let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`
|
|
419
|
-
let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`
|
|
420
|
-
|
|
421
|
-
let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`
|
|
422
|
-
let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`
|
|
423
|
-
let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`
|
|
424
|
-
|
|
425
|
-
let vs = r.grups
|
|
426
|
-
|
|
427
|
-
let t = ''
|
|
428
|
-
each(vs, (v) => {
|
|
429
|
-
t += `
|
|
430
|
-
<span style="display:inline-block; line-height:20px; height:20px;">
|
|
431
|
-
<div style="display:flex;">
|
|
432
|
-
<div style="padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}">
|
|
433
|
-
${v.mode}
|
|
434
|
-
</div>
|
|
435
|
-
<div style="padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}">
|
|
436
|
-
${v.name}
|
|
437
|
-
</div>
|
|
438
|
-
</div>
|
|
439
|
-
</span>
|
|
440
|
-
`
|
|
441
|
-
})
|
|
442
|
-
|
|
443
|
-
return t
|
|
444
|
-
},
|
|
445
|
-
'mode': (v, k, r) => {
|
|
446
|
-
// console.log('kpCellRender mode', v)
|
|
447
|
-
|
|
448
|
-
//name
|
|
449
|
-
let name = get(r, 'name', '')
|
|
450
|
-
// console.log('name', name, k, r)
|
|
451
|
-
|
|
452
|
-
//mode
|
|
453
|
-
let mode = get(r, 'mode', '')
|
|
454
|
-
// console.log('mode', mode, k, r)
|
|
455
|
-
|
|
456
|
-
let t = `
|
|
457
|
-
<select onchange="$vo.$dg.showVeGrupBlngUsersToggleItemModeByName('${name}',this.value)" ${vo.isEditable ? '' : 'disabled'}>
|
|
458
|
-
<option value="OR" ${mode === 'OR' ? 'selected' : ''}>OR</option>
|
|
459
|
-
<option value="AND" ${mode === 'AND' ? 'selected' : ''}>AND</option>
|
|
460
|
-
</select>
|
|
461
|
-
`
|
|
462
|
-
|
|
463
|
-
return t
|
|
464
|
-
},
|
|
465
|
-
'enable': (v, k, r) => {
|
|
466
|
-
// console.log('kpCellRender enable', v, k, r)
|
|
467
|
-
|
|
468
|
-
//name
|
|
469
|
-
let name = get(r, 'name', '')
|
|
470
|
-
// console.log('name', name, k, r)
|
|
471
|
-
|
|
472
|
-
let t = `
|
|
473
|
-
<input type="checkbox" ${v === 'y' ? 'checked' : ''} onclick="$vo.$dg.showVeGrupBlngUsersToggleItemEnableByName('${name}')" ${vo.isEditable ? '' : 'disabled'} />
|
|
474
|
-
`
|
|
475
|
-
|
|
476
|
-
return t
|
|
477
|
-
},
|
|
478
|
-
},
|
|
479
433
|
rowsChange: (rs) => {
|
|
480
434
|
// console.log('rowsChange', rs)
|
|
481
435
|
// console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))
|
|
@@ -547,7 +501,7 @@ export default {
|
|
|
547
501
|
let vo = this
|
|
548
502
|
|
|
549
503
|
//cmp
|
|
550
|
-
let cmp = get(vo, '$refs.rftable
|
|
504
|
+
let cmp = get(vo, '$refs.rftable')
|
|
551
505
|
// console.log('cmp', cmp)
|
|
552
506
|
|
|
553
507
|
//refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據
|
|
@@ -559,7 +513,7 @@ export default {
|
|
|
559
513
|
let vo = this
|
|
560
514
|
|
|
561
515
|
//cmp
|
|
562
|
-
let cmp = get(vo, '$refs.rftable
|
|
516
|
+
let cmp = get(vo, '$refs.rftable')
|
|
563
517
|
// console.log('cmp', cmp)
|
|
564
518
|
|
|
565
519
|
//getDisplayData
|
|
@@ -129,13 +129,33 @@
|
|
|
129
129
|
</div>
|
|
130
130
|
|
|
131
131
|
<template v-if="items">
|
|
132
|
-
<
|
|
132
|
+
<WAggridVue
|
|
133
133
|
ref="rftable"
|
|
134
134
|
:style="`width:100%;`"
|
|
135
135
|
:height="contentHeight"
|
|
136
136
|
:opt="opt"
|
|
137
137
|
>
|
|
138
|
-
|
|
138
|
+
<template v-slot:cell-render="props">
|
|
139
|
+
<template v-if="props.key==='pemisNames'">
|
|
140
|
+
<span v-for="(item, idx) in props.row.pemis" :key="idx" style="display:inline-block; line-height:20px; height:20px;">
|
|
141
|
+
<div style="display:flex;">
|
|
142
|
+
<div :style="'padding:0px 5px; border-top-left-radius:4px; border-bottom-left-radius:4px; ' + (item.enable === 'y' ? 'border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;' : 'border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;')">
|
|
143
|
+
{{ item.mode }}
|
|
144
|
+
</div>
|
|
145
|
+
<div :style="'padding:0px 5px; border-top-right-radius:4px; border-bottom-right-radius:4px; ' + (item.enable === 'y' ? '_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;' : '_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;')">
|
|
146
|
+
{{ item.name }}
|
|
147
|
+
</div>
|
|
148
|
+
</div>
|
|
149
|
+
</span>
|
|
150
|
+
</template>
|
|
151
|
+
<select v-else-if="props.key==='mode'" @change="showVePemiBlngGrupsToggleItemModeByName(props.row.name, $event.target.value)" :disabled="!isEditable">
|
|
152
|
+
<option value="OR" :selected="props.row.mode === 'OR'">OR</option>
|
|
153
|
+
<option value="AND" :selected="props.row.mode === 'AND'">AND</option>
|
|
154
|
+
</select>
|
|
155
|
+
<input v-else-if="props.key==='enable'" type="checkbox" :checked="props.value === 'y'" @click="showVePemiBlngGrupsToggleItemEnableByName(props.row.name)" :disabled="!isEditable" />
|
|
156
|
+
<span v-else>{{ props.value }}</span>
|
|
157
|
+
</template>
|
|
158
|
+
</WAggridVue>
|
|
139
159
|
</template>
|
|
140
160
|
|
|
141
161
|
<div
|
|
@@ -171,14 +191,14 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
171
191
|
import isestr from 'wsemi/src/isestr.mjs'
|
|
172
192
|
import WDialog from 'w-component-vue/src/components/WDialog.vue'
|
|
173
193
|
import WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'
|
|
174
|
-
import
|
|
194
|
+
import WAggridVue from 'w-aggrid-vue/src/components/WAggridVue.vue'
|
|
175
195
|
|
|
176
196
|
|
|
177
197
|
export default {
|
|
178
198
|
components: {
|
|
179
199
|
WDialog,
|
|
180
200
|
WButtonCircle,
|
|
181
|
-
|
|
201
|
+
WAggridVue,
|
|
182
202
|
},
|
|
183
203
|
props: {
|
|
184
204
|
},
|
|
@@ -410,72 +430,6 @@ export default {
|
|
|
410
430
|
kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟
|
|
411
431
|
'pemisNames': false,
|
|
412
432
|
},
|
|
413
|
-
kpCellRender: {
|
|
414
|
-
'pemisNames': (v, k, r) => {
|
|
415
|
-
// console.log('kpCellRender pemisNames', v, k, r)
|
|
416
|
-
|
|
417
|
-
let csp = `border-top-left-radius:4px; border-bottom-left-radius:4px;`
|
|
418
|
-
let csnp = `border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#ffffff; color:#555;`
|
|
419
|
-
let csep = `border-left:1px solid #ac2451; border-right:1px solid #9e2149; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#be295a; color:#fff;`
|
|
420
|
-
|
|
421
|
-
let csa = `border-top-right-radius:4px; border-bottom-right-radius:4px;`
|
|
422
|
-
let csna = `_border-left:1px solid #aaaaaa; border-right:1px solid #aaaaaa; border-top:1px solid #aaaaaa; border-bottom:1px solid #aaaaaa; background:#eeeeee; color:#555;`
|
|
423
|
-
let csea = `_border-left:1px solid #ac2451; border-right:1px solid #ac2451; border-top:1px solid #ac2451; border-bottom:1px solid #ac2451; background:#d22f64; color:#fff;`
|
|
424
|
-
|
|
425
|
-
let vs = r.pemis
|
|
426
|
-
|
|
427
|
-
let t = ''
|
|
428
|
-
each(vs, (v) => {
|
|
429
|
-
t += `
|
|
430
|
-
<span style="display:inline-block; line-height:20px; height:20px;">
|
|
431
|
-
<div style="display:flex;">
|
|
432
|
-
<div style="padding:0px 5px; ${csp} ${v.enable === 'y' ? csep : csnp}">
|
|
433
|
-
${v.mode}
|
|
434
|
-
</div>
|
|
435
|
-
<div style="padding:0px 5px; ${csa} ${v.enable === 'y' ? csea : csna}">
|
|
436
|
-
${v.name}
|
|
437
|
-
</div>
|
|
438
|
-
</div>
|
|
439
|
-
</span>
|
|
440
|
-
`
|
|
441
|
-
})
|
|
442
|
-
|
|
443
|
-
return t
|
|
444
|
-
},
|
|
445
|
-
'mode': (v, k, r) => {
|
|
446
|
-
// console.log('kpCellRender mode', v)
|
|
447
|
-
|
|
448
|
-
//name
|
|
449
|
-
let name = get(r, 'name', '')
|
|
450
|
-
// console.log('name', name, k, r)
|
|
451
|
-
|
|
452
|
-
//mode
|
|
453
|
-
let mode = get(r, 'mode', '')
|
|
454
|
-
// console.log('mode', mode, k, r)
|
|
455
|
-
|
|
456
|
-
let t = `
|
|
457
|
-
<select onchange="$vo.$dg.showVePemiBlngGrupsToggleItemModeByName('${name}',this.value)" ${vo.isEditable ? '' : 'disabled'}>
|
|
458
|
-
<option value="OR" ${mode === 'OR' ? 'selected' : ''}>OR</option>
|
|
459
|
-
<option value="AND" ${mode === 'AND' ? 'selected' : ''}>AND</option>
|
|
460
|
-
</select>
|
|
461
|
-
`
|
|
462
|
-
|
|
463
|
-
return t
|
|
464
|
-
},
|
|
465
|
-
'enable': (v, k, r) => {
|
|
466
|
-
// console.log('kpCellRender enable', v, k, r)
|
|
467
|
-
|
|
468
|
-
//name
|
|
469
|
-
let name = get(r, 'name', '')
|
|
470
|
-
// console.log('name', name, k, r)
|
|
471
|
-
|
|
472
|
-
let t = `
|
|
473
|
-
<input type="checkbox" ${v === 'y' ? 'checked' : ''} onclick="$vo.$dg.showVePemiBlngGrupsToggleItemEnableByName('${name}')" ${vo.isEditable ? '' : 'disabled'} />
|
|
474
|
-
`
|
|
475
|
-
|
|
476
|
-
return t
|
|
477
|
-
},
|
|
478
|
-
},
|
|
479
433
|
rowsChange: (rs) => {
|
|
480
434
|
// console.log('rowsChange', rs)
|
|
481
435
|
// console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))
|
|
@@ -547,7 +501,7 @@ export default {
|
|
|
547
501
|
let vo = this
|
|
548
502
|
|
|
549
503
|
//cmp
|
|
550
|
-
let cmp = get(vo, '$refs.rftable
|
|
504
|
+
let cmp = get(vo, '$refs.rftable')
|
|
551
505
|
// console.log('cmp', cmp)
|
|
552
506
|
|
|
553
507
|
//refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據
|
|
@@ -559,7 +513,7 @@ export default {
|
|
|
559
513
|
let vo = this
|
|
560
514
|
|
|
561
515
|
//cmp
|
|
562
|
-
let cmp = get(vo, '$refs.rftable
|
|
516
|
+
let cmp = get(vo, '$refs.rftable')
|
|
563
517
|
// console.log('cmp', cmp)
|
|
564
518
|
|
|
565
519
|
//getDisplayData
|