w-web-perm 1.0.4 → 1.0.5
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/README.md +9 -4
- package/dist/css/app.c07ac905.css +1 -0
- package/dist/index.tmp +1 -1
- package/dist/js/app-legacy.08662a52.js +2 -0
- package/dist/js/app-legacy.08662a52.js.map +1 -0
- package/dist/js/app.08662a52.js +2 -0
- package/dist/js/app.08662a52.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.01754e13.js +13 -0
- package/dist/js/chunk-vendors-legacy.01754e13.js.map +1 -0
- package/dist/js/chunk-vendors.01754e13.js +13 -0
- package/dist/js/chunk-vendors.01754e13.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 +41 -5
- package/docs/WWebPerm.mjs.html +341 -25
- package/docs/index.html +1 -1
- package/{g.mDb.mjs → g.backupDb.mjs} +1 -1
- package/g.initialData.mjs +111 -0
- package/{g.mInitialTestData.mjs → g.initialTestData.mjs} +1 -1
- package/g.provideRuleGroups.mjs +56 -0
- package/g.provideTargets.mjs +57 -0
- package/g.provideUsers.mjs +45 -0
- package/package.json +2 -7
- package/public/index.html +1 -1
- package/server/WWebPerm.mjs +340 -24
- package/server/provideRuleGroups.mjs +65 -0
- package/server/provideTargets.mjs +59 -0
- package/server/provideUsers.mjs +68 -0
- package/src/App.vue +2 -10
- package/src/components/Common/CheckYes.vue +2 -2
- package/src/components/Common/CheckYesNo.vue +3 -3
- package/src/components/Common/LoadingWinBar.vue +1 -1
- package/src/components/LayoutContent.vue +35 -62
- package/src/components/LayoutContentGroups.vue +64 -61
- package/src/components/LayoutContentTargets.vue +52 -53
- package/src/components/LayoutContentUsers.vue +62 -60
- package/src/components/VeUser.vue +18 -26
- package/src/components/ruleGroup.vue +11 -11
- package/src/main.js +0 -2
- package/src/schema/tables/ruleGroups.mjs +11 -11
- package/src/schema/tables/targets.mjs +6 -9
- package/src/schema/tables/users.mjs +5 -5
- package/src/store/mutations.mjs +324 -69
- package/srv.mjs +10 -11
- package/tableTags-web-perm.json +1 -1
- package/dist/css/app.79b4b59b.css +0 -1
- package/dist/css/chunk-vendors.99633b53.css +0 -5
- package/dist/js/app-legacy.48e6e535.js +0 -2
- package/dist/js/app-legacy.48e6e535.js.map +0 -1
- package/dist/js/app.7f6428ac.js +0 -2
- package/dist/js/app.7f6428ac.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.7cb6c366.js +0 -13
- package/dist/js/chunk-vendors-legacy.7cb6c366.js.map +0 -1
- package/dist/js/chunk-vendors.7cb6c366.js +0 -13
- package/dist/js/chunk-vendors.7cb6c366.js.map +0 -1
- package/g.mInitialData.mjs +0 -147
- package/src/plugins/mVuetify.mjs +0 -12
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
<div style="padding:5px 0px; display:flex; align-items:center;">
|
|
20
20
|
<div style="padding-right:5px; font-size:0.9rem; color:#888;">
|
|
21
|
-
|
|
21
|
+
{{$t('name')}}:
|
|
22
22
|
</div>
|
|
23
23
|
<div style="">
|
|
24
24
|
<WText
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
|
|
32
32
|
<div style="padding:5px 0px; display:flex; align-items:center;">
|
|
33
33
|
<div style="padding-right:5px; font-size:0.9rem; color:#888;">
|
|
34
|
-
|
|
34
|
+
{{$t('description')}}:
|
|
35
35
|
</div>
|
|
36
36
|
<div style="">
|
|
37
37
|
<WText
|
|
@@ -64,10 +64,10 @@
|
|
|
64
64
|
v-if="false"
|
|
65
65
|
>
|
|
66
66
|
|
|
67
|
-
<div style="margin-right:10px;"
|
|
67
|
+
<div style="margin-right:10px;">{{$t('allDefaults')}}:</div>
|
|
68
68
|
|
|
69
69
|
<div style="margin-right:10px; display:flex; align-items:center;">
|
|
70
|
-
<div style="margin-right:5px;"
|
|
70
|
+
<div style="margin-right:5px;">{{$t('show')}}</div>
|
|
71
71
|
<div>
|
|
72
72
|
<WSwitch
|
|
73
73
|
:value="defaultShow"
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
</div>
|
|
78
78
|
|
|
79
79
|
<div style="margin-right:10px; display:flex; align-items:center;">
|
|
80
|
-
<div style="margin-right:5px;"
|
|
80
|
+
<div style="margin-right:5px;">{{$t('active')}}</div>
|
|
81
81
|
<div>
|
|
82
82
|
<WSwitch
|
|
83
83
|
:value="defaultActive"
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
:iconSize="18"
|
|
116
116
|
:paddingStyle="{v:4,h:4}"
|
|
117
117
|
:shadow="false"
|
|
118
|
-
:tooltip="'
|
|
118
|
+
:tooltip="$t('showChildren')"
|
|
119
119
|
:backgroundColor="'rgba(200,200,200,0.2)'"
|
|
120
120
|
:backgroundColorHover="'rgba(255,150,100,0.2)'"
|
|
121
121
|
:backgroundColorFocus="'rgba(255,150,100,0.2)'"
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
:iconSize="18"
|
|
131
131
|
:paddingStyle="{v:4,h:4}"
|
|
132
132
|
:shadow="false"
|
|
133
|
-
:tooltip="'
|
|
133
|
+
:tooltip="$t('hideChildren')"
|
|
134
134
|
:backgroundColor="'rgba(200,200,200,0.2)'"
|
|
135
135
|
:backgroundColorHover="'rgba(255,150,100,0.2)'"
|
|
136
136
|
:backgroundColorFocus="'rgba(255,150,100,0.2)'"
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
:iconSize="18"
|
|
146
146
|
:paddingStyle="{v:4,h:4}"
|
|
147
147
|
:shadow="false"
|
|
148
|
-
:tooltip="'
|
|
148
|
+
:tooltip="$t('activateChildren')"
|
|
149
149
|
:backgroundColor="'rgba(200,200,200,0.2)'"
|
|
150
150
|
:backgroundColorHover="'rgba(255,150,100,0.2)'"
|
|
151
151
|
:backgroundColorFocus="'rgba(255,150,100,0.2)'"
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
:iconSize="18"
|
|
161
161
|
:paddingStyle="{v:4,h:4}"
|
|
162
162
|
:shadow="false"
|
|
163
|
-
:tooltip="'
|
|
163
|
+
:tooltip="$t('deactivateChildren')"
|
|
164
164
|
:backgroundColor="'rgba(200,200,200,0.2)'"
|
|
165
165
|
:backgroundColorHover="'rgba(255,150,100,0.2)'"
|
|
166
166
|
:backgroundColorFocus="'rgba(255,150,100,0.2)'"
|
|
@@ -174,7 +174,7 @@
|
|
|
174
174
|
|
|
175
175
|
<div style="margin-left:10px; display:inline-block;">
|
|
176
176
|
<div style="display:flex; align-items:center;">
|
|
177
|
-
<div style="margin-right:3px; font-size:0.8rem;"
|
|
177
|
+
<div style="margin-right:3px; font-size:0.8rem;">{{$t('show')}}</div>
|
|
178
178
|
<WCheckbox
|
|
179
179
|
:checkedIconColor="'yellow darken-4'"
|
|
180
180
|
:uncheckedIconColor="'yellow darken-4'"
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
|
|
188
188
|
<div style="margin-left:10px; display:inline-block;">
|
|
189
189
|
<div style="display:flex; align-items:center;">
|
|
190
|
-
<div style="margin-right:3px; font-size:0.8rem;"
|
|
190
|
+
<div style="margin-right:3px; font-size:0.8rem;">{{$t('active')}}</div>
|
|
191
191
|
<WCheckbox
|
|
192
192
|
:checkedIconColor="'yellow darken-4'"
|
|
193
193
|
:uncheckedIconColor="'yellow darken-4'"
|
package/src/main.js
CHANGED
|
@@ -7,7 +7,6 @@ import domResize from 'w-component-vue/src/js/domResize.mjs'
|
|
|
7
7
|
import domDragDrop from 'w-component-vue/src/js/domDragDrop.mjs'
|
|
8
8
|
import App from './App.vue'
|
|
9
9
|
import store from './store/index.mjs'
|
|
10
|
-
import mVuetify from './plugins/mVuetify.mjs'
|
|
11
10
|
import ui from './plugins/mUI.mjs'
|
|
12
11
|
import mDataSelectorSchema from './plugins/mDataSelectorSchema.mjs'
|
|
13
12
|
// import mDataSupport from './plugins/mDataSupport.mjs'
|
|
@@ -91,7 +90,6 @@ WServHapiClient({
|
|
|
91
90
|
|
|
92
91
|
//new
|
|
93
92
|
new Vue({
|
|
94
|
-
vuetify: mVuetify,
|
|
95
93
|
store,
|
|
96
94
|
render: h => h(App)
|
|
97
95
|
}).$mount('#app')
|
|
@@ -18,24 +18,24 @@ let settings = {
|
|
|
18
18
|
name: '主鍵',
|
|
19
19
|
type: 'STRING',
|
|
20
20
|
},
|
|
21
|
-
name: {
|
|
22
|
-
name: '名稱',
|
|
23
|
-
type: 'STRING',
|
|
24
|
-
},
|
|
25
21
|
order: {
|
|
26
22
|
name: '順序',
|
|
27
23
|
type: 'INTEGER',
|
|
28
24
|
},
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
name: {
|
|
26
|
+
name: '名稱',
|
|
27
|
+
type: 'STRING',
|
|
28
|
+
},
|
|
33
29
|
description: {
|
|
34
30
|
name: '說明',
|
|
35
31
|
type: 'TEXT',
|
|
36
32
|
},
|
|
33
|
+
from: {
|
|
34
|
+
name: '來源',
|
|
35
|
+
type: 'STRING',
|
|
36
|
+
},
|
|
37
37
|
crules: {
|
|
38
|
-
name: '規則', //為json字串, 例如{ '___all___': {show:'y',active:'n'}, '專案A
|
|
38
|
+
name: '規則', //為json字串, 例如{ '___all___': {show:'y',active:'n'}, '專案A/頁A': {show:'y',active:'y'}, '專案A/頁B': {show:'n',active:'n'} }
|
|
39
39
|
type: 'TEXT',
|
|
40
40
|
},
|
|
41
41
|
userId: {
|
|
@@ -68,15 +68,15 @@ let funNew = (ndata = {}) => {
|
|
|
68
68
|
|
|
69
69
|
let funTest = () => {
|
|
70
70
|
let rs = [
|
|
71
|
-
['權限群組1', `{ "___all___": { "show": "y", "active": "n" }, "專案A
|
|
71
|
+
['權限群組1', `{ "___all___": { "show": "y", "active": "n" }, "專案A/頁A": { "show": "y", "active": "y" }, "專案A/頁B": { "show": "n", "active": "n" } }`],
|
|
72
72
|
['權限群組2', `{ "___all___": { "show": "y", "active": "n" } }`],
|
|
73
73
|
['權限群組3', `{ "___all___": { "show": "y", "active": "y" } }`],
|
|
74
74
|
]
|
|
75
75
|
rs = map(rs, ([g, crules], k) => {
|
|
76
76
|
let v = funNew({ userId: 'id-for-admin', crules })
|
|
77
77
|
v.id = `id-for-${g}`
|
|
78
|
-
v.name = g
|
|
79
78
|
v.order = k
|
|
79
|
+
v.name = g
|
|
80
80
|
v.description = `${g}的說明`
|
|
81
81
|
v = dtpick(v, keys(settings))
|
|
82
82
|
return v
|
|
@@ -22,18 +22,14 @@ let settings = {
|
|
|
22
22
|
name: '順序',
|
|
23
23
|
type: 'INTEGER',
|
|
24
24
|
},
|
|
25
|
-
// key: {
|
|
26
|
-
// name: '所屬區塊識別鍊',
|
|
27
|
-
// type: 'STRING',
|
|
28
|
-
// },
|
|
29
|
-
// name: {
|
|
30
|
-
// name: '區塊名稱',
|
|
31
|
-
// type: 'STRING',
|
|
32
|
-
// },
|
|
33
25
|
description: {
|
|
34
26
|
name: '說明',
|
|
35
27
|
type: 'TEXT',
|
|
36
28
|
},
|
|
29
|
+
from: {
|
|
30
|
+
name: '來源',
|
|
31
|
+
type: 'STRING',
|
|
32
|
+
},
|
|
37
33
|
}
|
|
38
34
|
|
|
39
35
|
let funNew = (ndata = {}) => {
|
|
@@ -71,7 +67,8 @@ let funTest = () => {
|
|
|
71
67
|
]
|
|
72
68
|
rs = map(rs, (key, k) => {
|
|
73
69
|
let v = funNew({ description: key })
|
|
74
|
-
v.id =
|
|
70
|
+
v.id = key
|
|
71
|
+
v.order = k
|
|
75
72
|
v = dtpick(v, keys(settings))
|
|
76
73
|
return v
|
|
77
74
|
})
|
|
@@ -18,6 +18,10 @@ let settings = {
|
|
|
18
18
|
name: '主鍵',
|
|
19
19
|
type: 'STRING',
|
|
20
20
|
},
|
|
21
|
+
order: {
|
|
22
|
+
name: '順序',
|
|
23
|
+
type: 'INTEGER',
|
|
24
|
+
},
|
|
21
25
|
name: {
|
|
22
26
|
name: '姓名',
|
|
23
27
|
type: 'STRING',
|
|
@@ -38,10 +42,6 @@ let settings = {
|
|
|
38
42
|
name: '所屬權限群組主鍵', //多主鍵用分號區隔
|
|
39
43
|
type: 'STRING',
|
|
40
44
|
},
|
|
41
|
-
isVirtual: {
|
|
42
|
-
name: '是否為虛擬使用者', //代表由外部系統(如SSO或AD)提供之使用者
|
|
43
|
-
type: 'STRING',
|
|
44
|
-
},
|
|
45
45
|
isAdmin: {
|
|
46
46
|
name: '是否為系統管理員',
|
|
47
47
|
type: 'STRING',
|
|
@@ -71,7 +71,6 @@ let settings = {
|
|
|
71
71
|
let funNew = (ndata = {}) => {
|
|
72
72
|
let o = dtmapping(ndata, keys(settings))
|
|
73
73
|
o.id = `${now2strp()}-${genID()}`
|
|
74
|
-
o.isVirtual = 'n'
|
|
75
74
|
o.isAdmin = 'n'
|
|
76
75
|
o.userIdUpdate = o.userId
|
|
77
76
|
o.timeCreate = nowms2str()
|
|
@@ -92,6 +91,7 @@ let funTest = () => {
|
|
|
92
91
|
rs = map(rs, (name, k) => {
|
|
93
92
|
let v = funNew({ userId: 'id-for-admin', name })
|
|
94
93
|
v.id = `id-for-${name}`
|
|
94
|
+
v.order = k
|
|
95
95
|
v.email = `${name}@example.com`
|
|
96
96
|
v = dtpick(v, keys(settings))
|
|
97
97
|
return v
|
package/src/store/mutations.mjs
CHANGED
|
@@ -10,7 +10,6 @@ let userDef = {
|
|
|
10
10
|
id: '', //id-for-admin
|
|
11
11
|
name: '', //測試者
|
|
12
12
|
email: '', //admin@example.com
|
|
13
|
-
// isVirtual: 'n',
|
|
14
13
|
isAdmin: 'n',
|
|
15
14
|
// isActive: 'n',
|
|
16
15
|
}
|
|
@@ -41,83 +40,339 @@ let state = {
|
|
|
41
40
|
lang: 'cht',
|
|
42
41
|
keyLangs: {
|
|
43
42
|
|
|
43
|
+
systemMessage: {
|
|
44
|
+
eng: 'System message',
|
|
45
|
+
cht: '系統確認訊息',
|
|
46
|
+
},
|
|
47
|
+
ok: {
|
|
48
|
+
eng: 'OK',
|
|
49
|
+
cht: '確認',
|
|
50
|
+
},
|
|
51
|
+
no: {
|
|
52
|
+
eng: 'No',
|
|
53
|
+
cht: '取消',
|
|
54
|
+
},
|
|
55
|
+
yes: {
|
|
56
|
+
eng: 'Yes',
|
|
57
|
+
cht: '確定',
|
|
58
|
+
},
|
|
59
|
+
|
|
44
60
|
empty: {
|
|
45
61
|
eng: 'Empty',
|
|
46
62
|
cht: '無',
|
|
47
63
|
},
|
|
48
|
-
// noSelectApi: {
|
|
49
|
-
// eng: 'No Select',
|
|
50
|
-
// cht: '尚未選擇API',
|
|
51
|
-
// },
|
|
52
64
|
waitingData: {
|
|
53
65
|
eng: 'Waiting data...',
|
|
54
66
|
cht: '等待數據中...',
|
|
55
67
|
},
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
68
|
+
|
|
69
|
+
isEditabled: {
|
|
70
|
+
eng: 'Editable',
|
|
71
|
+
cht: '是否編輯',
|
|
72
|
+
},
|
|
73
|
+
saveChanges: {
|
|
74
|
+
eng: `Save changes`,
|
|
75
|
+
cht: `儲存變更`,
|
|
76
|
+
},
|
|
77
|
+
from: {
|
|
78
|
+
eng: `From`,
|
|
79
|
+
cht: `來源`,
|
|
80
|
+
},
|
|
81
|
+
save: {
|
|
82
|
+
eng: `Save`,
|
|
83
|
+
cht: `儲存`,
|
|
84
|
+
},
|
|
85
|
+
close: {
|
|
86
|
+
eng: `Close`,
|
|
87
|
+
cht: `關閉`,
|
|
88
|
+
},
|
|
89
|
+
cancel: {
|
|
90
|
+
eng: `Cancel`,
|
|
91
|
+
cht: `取消`,
|
|
92
|
+
},
|
|
93
|
+
processing: {
|
|
94
|
+
eng: `Processing...`,
|
|
95
|
+
cht: `處理中請稍後...`,
|
|
96
|
+
},
|
|
97
|
+
anUnexpectedErrorOccurred: {
|
|
98
|
+
eng: `An unexpected error occurred, please contact the administrator`,
|
|
99
|
+
cht: `發生非預期錯誤,請洽管理員`,
|
|
100
|
+
},
|
|
101
|
+
unknow: {
|
|
102
|
+
eng: `Unknow`,
|
|
103
|
+
cht: `未知`,
|
|
104
|
+
},
|
|
105
|
+
|
|
106
|
+
username: {
|
|
107
|
+
eng: `Username`,
|
|
108
|
+
cht: `使用者姓名`,
|
|
109
|
+
},
|
|
110
|
+
email: {
|
|
111
|
+
eng: `Email`,
|
|
112
|
+
cht: `電子郵件`,
|
|
113
|
+
},
|
|
114
|
+
name: {
|
|
115
|
+
eng: `Name`,
|
|
116
|
+
cht: `名稱`,
|
|
117
|
+
},
|
|
118
|
+
description: {
|
|
119
|
+
eng: `Description`,
|
|
120
|
+
cht: `說明`,
|
|
121
|
+
},
|
|
122
|
+
noDescription: {
|
|
123
|
+
eng: `No description`,
|
|
124
|
+
cht: `無說明`,
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
managementTargets: {
|
|
128
|
+
eng: `Targets`,
|
|
129
|
+
cht: `管理區塊`,
|
|
130
|
+
},
|
|
131
|
+
permissionGroups: {
|
|
132
|
+
eng: `Groups`,
|
|
133
|
+
cht: `權限群組`,
|
|
134
|
+
},
|
|
135
|
+
userPermissions: {
|
|
136
|
+
eng: 'Users',
|
|
137
|
+
cht: '使用者權限',
|
|
138
|
+
},
|
|
139
|
+
|
|
140
|
+
userMsg1: {
|
|
141
|
+
eng: `Please give the appropriate permission group according to the user's identity.`,
|
|
142
|
+
cht: '請依照使用者身份給予適合之權限群組。',
|
|
143
|
+
},
|
|
144
|
+
userMsg2: {
|
|
145
|
+
eng: `Please confirm that the new user is an approved user.`,
|
|
146
|
+
cht: `請確認新增使用者為核可之使用者。`,
|
|
147
|
+
},
|
|
148
|
+
userList: {
|
|
149
|
+
eng: `User list`,
|
|
150
|
+
cht: `使用者分類清單`,
|
|
151
|
+
},
|
|
152
|
+
addUser: {
|
|
153
|
+
eng: `Add user`,
|
|
154
|
+
cht: `新增使用者`,
|
|
155
|
+
},
|
|
156
|
+
|
|
157
|
+
targetMsg1: {
|
|
158
|
+
eng: `Please click the button on the right side of each target to perform operations, such as changing the name, inserting or deleting targets.`,
|
|
159
|
+
cht: `請於各區塊右側點擊按鈕即可進行操作,例如變更名稱、插入或刪除區塊。`,
|
|
160
|
+
},
|
|
161
|
+
targetMsg2: {
|
|
162
|
+
eng: `Disable the sub-target function when editing a target.`,
|
|
163
|
+
cht: `編輯區塊時禁止顯隱子區塊功能。`,
|
|
164
|
+
},
|
|
165
|
+
edit: {
|
|
166
|
+
eng: `Edit`,
|
|
167
|
+
cht: `編輯`,
|
|
168
|
+
},
|
|
169
|
+
changeName: {
|
|
170
|
+
eng: `Change name`,
|
|
171
|
+
cht: `變更名稱`,
|
|
172
|
+
},
|
|
173
|
+
insertBefore: {
|
|
174
|
+
eng: `Insert before`,
|
|
175
|
+
cht: `插入前區塊`,
|
|
176
|
+
},
|
|
177
|
+
insertChild: {
|
|
178
|
+
eng: `Insert child`,
|
|
179
|
+
cht: `插入子區塊`,
|
|
180
|
+
},
|
|
181
|
+
insertAfter: {
|
|
182
|
+
eng: `Insert after`,
|
|
183
|
+
cht: `插入後區塊`,
|
|
184
|
+
},
|
|
185
|
+
deleteTarget: {
|
|
186
|
+
eng: `Delete target`,
|
|
187
|
+
cht: `刪除區塊`,
|
|
188
|
+
},
|
|
189
|
+
newTarget: {
|
|
190
|
+
eng: `New target`,
|
|
191
|
+
cht: `新區塊`,
|
|
192
|
+
},
|
|
193
|
+
failedToChangePermissionGroups: {
|
|
194
|
+
eng: `Failed to change permission groups`,
|
|
195
|
+
cht: `連動變更權限群組失敗`,
|
|
196
|
+
},
|
|
197
|
+
failedToClearTargets: {
|
|
198
|
+
eng: `Failed to clear existing targets`,
|
|
199
|
+
cht: `清除既有區塊數據失敗`,
|
|
200
|
+
},
|
|
201
|
+
failedToSaveTargets: {
|
|
202
|
+
eng: `Failed to save targets`,
|
|
203
|
+
cht: `儲存區塊數據失敗`,
|
|
204
|
+
},
|
|
205
|
+
successfulToSaveTargets: {
|
|
206
|
+
eng: `Save targets successfully`,
|
|
207
|
+
cht: `儲存區塊數據成功`,
|
|
208
|
+
},
|
|
209
|
+
|
|
210
|
+
groupMsg1: {
|
|
211
|
+
eng: `Please create appropriate permission groups for various users according to system management requirements.`,
|
|
212
|
+
cht: `請依照系統管理需求創建適合各類使用者適合的權限群組。`,
|
|
213
|
+
},
|
|
214
|
+
groupMsg2: {
|
|
215
|
+
eng: `When using edit mode, you can drag permission groups to change their relative order.`,
|
|
216
|
+
cht: `開啟編輯時可拖曳權限群組變更其相對順序。`,
|
|
217
|
+
},
|
|
218
|
+
addGroup: {
|
|
219
|
+
eng: `Add group`,
|
|
220
|
+
cht: `新增群組`,
|
|
221
|
+
},
|
|
222
|
+
addPermissionGroup: {
|
|
223
|
+
eng: `Add permission group`,
|
|
224
|
+
cht: `新增權限群組`,
|
|
225
|
+
},
|
|
226
|
+
groupMsgNoPick: {
|
|
227
|
+
eng: `No permission group is selected.`,
|
|
228
|
+
cht: `未選擇權限群組,請點擇上方任一權限群組以顯示管理範圍。`,
|
|
229
|
+
},
|
|
230
|
+
newGroup: {
|
|
231
|
+
eng: `New group`,
|
|
232
|
+
cht: `新權限群組`,
|
|
233
|
+
},
|
|
234
|
+
failedToAddPermissionGroup: {
|
|
235
|
+
eng: `Failed to add the permission group`,
|
|
236
|
+
cht: `新增權限群組失敗`,
|
|
237
|
+
},
|
|
238
|
+
successfulToAddPermissionGroup: {
|
|
239
|
+
eng: `Add permission group successfully`,
|
|
240
|
+
cht: `新增權限群組成功`,
|
|
241
|
+
},
|
|
242
|
+
confirmToDeletePermissionGroup: {
|
|
243
|
+
eng: `Do you want to delete the permission group[{name}]?`,
|
|
244
|
+
cht: `確認是否刪除權限群組`,
|
|
245
|
+
},
|
|
246
|
+
failedToDeletePermissionGroup: {
|
|
247
|
+
eng: `Failed to delete the permission group`,
|
|
248
|
+
cht: `刪除權限群組失敗`,
|
|
249
|
+
},
|
|
250
|
+
successfulToDeletePermissionGroup: {
|
|
251
|
+
eng: `Delete the permission group successfully`,
|
|
252
|
+
cht: `刪除權限群組成功`,
|
|
253
|
+
},
|
|
254
|
+
failedToChangeOrderPermissionGroup: {
|
|
255
|
+
eng: `Failed to change the order of permission group`,
|
|
256
|
+
cht: `變更權限群組順序失敗`,
|
|
257
|
+
},
|
|
258
|
+
successfulToChangeOrderPermissionGroup: {
|
|
259
|
+
eng: `Change the order of permission groups successfully`,
|
|
260
|
+
cht: `變更權限群組順序成功`,
|
|
261
|
+
},
|
|
262
|
+
rememberToGivePermissionGroupName: {
|
|
263
|
+
eng: `You need to give the permission group name`,
|
|
264
|
+
cht: `權限群組名稱請記得給予`,
|
|
265
|
+
},
|
|
266
|
+
isPermissionGroupNameEmpty: {
|
|
267
|
+
eng: `The {n}th permission group name is empty`,
|
|
268
|
+
cht: `第 {n} 個權限群組名稱為空`,
|
|
269
|
+
},
|
|
270
|
+
failedToSavePermissionGroup: {
|
|
271
|
+
eng: `Failed to save the permission group`,
|
|
272
|
+
cht: `儲存權限群組失敗`,
|
|
273
|
+
},
|
|
274
|
+
successfulToSavePermissionGroup: {
|
|
275
|
+
eng: `Save the permission group successfully`,
|
|
276
|
+
cht: `儲存權限群組成功`,
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
editUser: {
|
|
280
|
+
eng: `Edit user`,
|
|
281
|
+
cht: `編修使用者`,
|
|
282
|
+
},
|
|
283
|
+
belongToPermissionGroup: {
|
|
284
|
+
eng: `Permission group`,
|
|
285
|
+
cht: `隸屬權限群組`,
|
|
286
|
+
},
|
|
287
|
+
availableTarget: {
|
|
288
|
+
eng: `Available targets`,
|
|
289
|
+
cht: `使用者可用區塊`,
|
|
290
|
+
},
|
|
291
|
+
isAManager: {
|
|
292
|
+
eng: `Is a manager`,
|
|
293
|
+
cht: `是否為管理者`,
|
|
294
|
+
},
|
|
92
295
|
isActive: {
|
|
93
|
-
eng: '
|
|
94
|
-
cht: '
|
|
95
|
-
},
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
296
|
+
eng: 'Is active',
|
|
297
|
+
cht: '是否有效',
|
|
298
|
+
},
|
|
299
|
+
remark: {
|
|
300
|
+
eng: `Remark`,
|
|
301
|
+
cht: `備註`,
|
|
302
|
+
},
|
|
303
|
+
dayCreate: {
|
|
304
|
+
eng: 'Create day',
|
|
305
|
+
cht: '創建日期',
|
|
306
|
+
},
|
|
307
|
+
newUser: {
|
|
308
|
+
eng: `New user`,
|
|
309
|
+
cht: `新使用者`,
|
|
310
|
+
},
|
|
311
|
+
failedToAddUser: {
|
|
312
|
+
eng: `Failed to add the user`,
|
|
313
|
+
cht: `新增使用者失敗`,
|
|
314
|
+
},
|
|
315
|
+
successfulToAddUser: {
|
|
316
|
+
eng: `Add the user successfully`,
|
|
317
|
+
cht: `新增使用者成功`,
|
|
318
|
+
},
|
|
319
|
+
confirmToDeleteUser: {
|
|
320
|
+
eng: `Do you want to delete the user[{name}]?`,
|
|
321
|
+
cht: `確認是否刪除使用者`,
|
|
322
|
+
},
|
|
323
|
+
failedToDeleteUser: {
|
|
324
|
+
eng: `Failed to delete the user`,
|
|
325
|
+
cht: `刪除使用者失敗`,
|
|
326
|
+
},
|
|
327
|
+
successfulToDeleteUser: {
|
|
328
|
+
eng: `Delete the user successfully`,
|
|
329
|
+
cht: `刪除使用者成功`,
|
|
330
|
+
},
|
|
331
|
+
cannotShowUserDetailsInViewMode: {
|
|
332
|
+
eng: `Can not show the user details in the view mode`,
|
|
333
|
+
cht: `非編輯模式無法查閱使用者詳細資訊`,
|
|
334
|
+
},
|
|
335
|
+
|
|
336
|
+
allDefaults: {
|
|
337
|
+
eng: `All defaults`,
|
|
338
|
+
cht: `全部項目預設值`,
|
|
339
|
+
},
|
|
340
|
+
show: {
|
|
341
|
+
eng: `Show`,
|
|
342
|
+
cht: `顯示`,
|
|
343
|
+
},
|
|
344
|
+
active: {
|
|
345
|
+
eng: `Active`,
|
|
346
|
+
cht: `啟用`,
|
|
347
|
+
},
|
|
348
|
+
showChildren: {
|
|
349
|
+
eng: `Show children`,
|
|
350
|
+
cht: `所屬顯示`,
|
|
351
|
+
},
|
|
352
|
+
hideChildren: {
|
|
353
|
+
eng: `Hide children`,
|
|
354
|
+
cht: `所屬不顯示`,
|
|
355
|
+
},
|
|
356
|
+
activateChildren: {
|
|
357
|
+
eng: `Activate children`,
|
|
358
|
+
cht: `所屬啟用`,
|
|
359
|
+
},
|
|
360
|
+
deactivateChildren: {
|
|
361
|
+
eng: `Deactivate children`,
|
|
362
|
+
cht: `所屬不啟用`,
|
|
363
|
+
},
|
|
364
|
+
isUsernameEmpty: {
|
|
365
|
+
eng: `Username is empty`,
|
|
366
|
+
cht: `使用者名稱不得為空`,
|
|
367
|
+
},
|
|
368
|
+
failedToSaveUser: {
|
|
369
|
+
eng: `Failed to save the user`,
|
|
370
|
+
cht: `變更使用者失敗`,
|
|
371
|
+
},
|
|
372
|
+
successfulToSaveUser: {
|
|
373
|
+
eng: `Save the user successfully`,
|
|
374
|
+
cht: `變更使用者成功`,
|
|
375
|
+
},
|
|
121
376
|
|
|
122
377
|
},
|
|
123
378
|
kpText: {},
|