jobdone-shared-files 0.0.1-beta.80 → 0.0.1-beta.82
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/ProjectManagement/projectNavbar.vue +116 -84
- package/README.md +1 -0
- package/common/directives/collapse.js +12 -12
- package/common/directives/popovers.js +10 -10
- package/common/directives/tooltip.js +10 -10
- package/common/format.js +26 -26
- package/index.js +14 -14
- package/lightboxWithOverview.vue +131 -131
- package/package.json +19 -19
- package/paginate.vue +138 -138
- package/style/css/vue-loading-overlay/index.css +40 -40
- package/style/scss/Common/Animation.scss +5 -5
- package/style/scss/Common/SelectableTable.scss +30 -30
- package/style/scss/Common/filepond.scss +27 -27
- package/style/scss/Common/thumbnail-group.scss +14 -14
- package/style/scss/Layout/LayoutBase.scss +1014 -1014
- package/style/scss/Layout/LayoutMobile.scss +202 -202
- package/style/scss/Layout/LayoutProject.scss +122 -122
- package/style/scss/Layout/LayoutSinglePage.scss +13 -13
- package/style/scss/Layout/LayoutTwoColumn.scss +56 -56
- package/style/scss/Settings/_Mixins.scss +229 -229
- package/style/scss/Settings/_MobileVariables.scss +11 -11
- package/style/scss/Settings/_basic-import.scss +5 -5
- package/style/scss/Settings/_bs-variables-dark.scss +70 -70
- package/style/scss/Settings/_bs-variables.scss +1743 -1743
- package/style/scss/Settings/_color-mode.scss +122 -122
- package/style/scss/Settings/_custom-variables.scss +13 -13
- package/tagEditor.vue +263 -263
- package/tree.vue +69 -69
- package/treeItem.vue +366 -366
- package/vueLoadingOverlay.vue +70 -70
- package/.vs/VSWorkspaceState.json +0 -6
- package/.vs/jobdone_sharejs/FileContentIndex/a973f22d-a16a-4ca9-ab6a-75ab92ec6af7.vsidx +0 -0
- package/.vs/jobdone_sharejs/FileContentIndex/bacf95a3-2185-41c2-b12a-e93bb40f2204.vsidx +0 -0
- package/.vs/jobdone_sharejs/config/applicationhost.config +0 -1021
- package/.vs/jobdone_sharejs/v17/.wsuo +0 -0
- package/.vs/slnx.sqlite +0 -0
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
<div class="border-end">
|
|
13
13
|
<a :href="arrowBackLink" class="btn btn-normal btn-square" title="離開專案"><span class="material-icons">arrow_back</span></a>
|
|
14
14
|
</div>
|
|
15
|
-
<span class="fs-6 mb-0 mx-4 text-nowrap text-project-title"><b>{{projectInfo?.name}}</b></span>
|
|
15
|
+
<span class="fs-6 mb-0 mx-4 text-nowrap text-project-title text-overflow"><b class="">{{projectInfo?.name}}</b></span>
|
|
16
16
|
<!--TODO: 解決 overflow scroll 與 dropdown 衝突-->
|
|
17
17
|
<div class="flex-grow-1 text-nowrap">
|
|
18
18
|
<div class="d-flex flex-grow-1 border-start">
|
|
19
|
-
<nav class="navbar-nav navbar-main navbar-line navbar-line-lg">
|
|
19
|
+
<nav class="navbar-nav navbar-main navbar-tab navbar-line navbar-line-lg">
|
|
20
20
|
<div class="nav-item navbar-line-item btn nav-link border-0 dropdown"
|
|
21
21
|
:class="{'active': isActive(null)}">
|
|
22
22
|
<a class="dropdown-link" :href="finalRootDomain + '/ProjectManagement/ProjectInfo?id=' + projectId">
|
|
@@ -30,12 +30,15 @@
|
|
|
30
30
|
{{ navLinkObj?.moduleLink?.name }}
|
|
31
31
|
</a>
|
|
32
32
|
<span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" v-else>
|
|
33
|
-
<span class="material-icons icon-18 me-
|
|
34
|
-
|
|
33
|
+
<span class="material-icons icon-18 icon-shine me-1">{{ navLinkObj?.moduleLink?.icon }}</span>
|
|
34
|
+
功能選單
|
|
35
35
|
</span>
|
|
36
|
-
<ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length
|
|
37
|
-
<li v-if="navLinkObj?.moduleLink?.apps?.length
|
|
38
|
-
<a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">
|
|
36
|
+
<ul class="dropdown-menu" :class="{'p-0': navLinkObj?.moduleLink?.apps?.length == 0}">
|
|
37
|
+
<li v-if="navLinkObj?.moduleLink?.apps?.length > 0">
|
|
38
|
+
<a class="dropdown-item" :href="app.url + '?projectId=' + projectId" v-for="(app, index) in navLinkObj.moduleLink.apps" :key="index">
|
|
39
|
+
<span class="material-icons icon-18 align-middle me-2">{{app.icon}}</span>
|
|
40
|
+
<span class="align-middle">{{app.name}}</span>
|
|
41
|
+
</a>
|
|
39
42
|
</li>
|
|
40
43
|
</ul>
|
|
41
44
|
</div>
|
|
@@ -50,15 +53,19 @@
|
|
|
50
53
|
</nav>
|
|
51
54
|
<nav class="navbar-nav navbar-main navbar-line navbar-line-lg ms-auto">
|
|
52
55
|
<div class="nav-item navbar-line-item btn nav-link border-0 dropdown">
|
|
53
|
-
<
|
|
54
|
-
<div class="thumbnail-content thumbnail-32 rounded-circle me-
|
|
55
|
-
|
|
56
|
-
</
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
<span class="dropdown-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
|
|
57
|
+
<div class="thumbnail-content thumbnail-32 rounded-circle me-2" :style="'background-image: url(' + userPicture + ');'"></div>
|
|
58
|
+
{{userId}}
|
|
59
|
+
</span>
|
|
60
|
+
<ul class="dropdown-menu dropdown-menu-end">
|
|
61
|
+
<li>
|
|
62
|
+
<a class="dropdown-item" :href="finalRootDomain + '/Profile'">個人資訊</a>
|
|
63
|
+
</li>
|
|
64
|
+
<li><hr class="dropdown-divider"></li>
|
|
65
|
+
<li>
|
|
66
|
+
<a class="dropdown-item" :href="logOutLink">登出</a>
|
|
67
|
+
</li>
|
|
68
|
+
</ul>
|
|
62
69
|
</div>
|
|
63
70
|
</nav>
|
|
64
71
|
</div>
|
|
@@ -72,6 +79,7 @@
|
|
|
72
79
|
<span class="placeholder placeholder-xs w-6rem"></span>
|
|
73
80
|
</div>
|
|
74
81
|
<div class="navbar-content opacity-0 d-flex align-items-center">
|
|
82
|
+
<span class="badge badge-outline-purple me-3">{{ navLinkObj?.moduleLink?.name }}</span>
|
|
75
83
|
<small class="d-flex me-4" v-if="projectInfo?.caseNo">
|
|
76
84
|
<b class="me-2">案號</b>
|
|
77
85
|
<span>{{projectInfo?.caseNo}}</span>
|
|
@@ -144,37 +152,37 @@
|
|
|
144
152
|
const projectInfo = ref({});
|
|
145
153
|
const navLinkObj = ref({});
|
|
146
154
|
const finalRootDomain = computed(() => {
|
|
147
|
-
if (props.rootDomain.substr(-1) === "/") {
|
|
148
|
-
return props.rootDomain.slice(0, -1);
|
|
155
|
+
if (props.rootDomain.substr(-1) === "/") {
|
|
156
|
+
return props.rootDomain.slice(0, -1);
|
|
149
157
|
}
|
|
150
158
|
return props.rootDomain;
|
|
151
159
|
});
|
|
152
160
|
|
|
153
161
|
const isActive = (target) => {
|
|
154
|
-
if (target === null) {
|
|
155
|
-
return target === null && !props.activeClientId;
|
|
162
|
+
if (target === null) {
|
|
163
|
+
return target === null && !props.activeClientId;
|
|
156
164
|
}
|
|
157
|
-
if (typeof target === 'object') {
|
|
158
|
-
return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.
|
|
165
|
+
if (typeof target === 'object') {
|
|
166
|
+
return !!props.activeClientId && (target.clientId === props.activeClientId || target.apps.some(x => x.clientId == props.activeClientId))
|
|
159
167
|
}
|
|
160
|
-
if (!!props.activeClientId && target == props.activeClientId) {
|
|
161
|
-
return true;
|
|
168
|
+
if (!!props.activeClientId && target == props.activeClientId) {
|
|
169
|
+
return true;
|
|
162
170
|
}
|
|
163
171
|
return false;
|
|
164
172
|
}
|
|
165
173
|
|
|
166
174
|
onMounted(async () => {
|
|
167
|
-
try {
|
|
168
|
-
switch (typeof props.projectInfo) {
|
|
169
|
-
case 'string':
|
|
170
|
-
axios.get(props.projectInfo).then((res) => {
|
|
171
|
-
projectInfo.value = res.data;
|
|
172
|
-
});
|
|
173
|
-
break;
|
|
174
|
-
case 'object':
|
|
175
|
-
projectInfo.value = props.projectInfo;
|
|
176
|
-
break;
|
|
177
|
-
default:
|
|
175
|
+
try {
|
|
176
|
+
switch (typeof props.projectInfo) {
|
|
177
|
+
case 'string':
|
|
178
|
+
axios.get(props.projectInfo).then((res) => {
|
|
179
|
+
projectInfo.value = res.data;
|
|
180
|
+
});
|
|
181
|
+
break;
|
|
182
|
+
case 'object':
|
|
183
|
+
projectInfo.value = props.projectInfo;
|
|
184
|
+
break;
|
|
185
|
+
default:
|
|
178
186
|
projectInfo.value = {
|
|
179
187
|
caseNo: '',
|
|
180
188
|
name: '',
|
|
@@ -183,10 +191,10 @@
|
|
|
183
191
|
approvedWorkingPeriod: '',
|
|
184
192
|
extendToDT: '',
|
|
185
193
|
extendDays: ''
|
|
186
|
-
};
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
} catch (e) {
|
|
194
|
+
};
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
} catch (e) {
|
|
190
198
|
projectInfo.value = {
|
|
191
199
|
caseNo: '',
|
|
192
200
|
name: '',
|
|
@@ -195,48 +203,48 @@
|
|
|
195
203
|
approvedWorkingPeriod: '',
|
|
196
204
|
extendToDT: '',
|
|
197
205
|
extendDays: ''
|
|
198
|
-
};
|
|
206
|
+
};
|
|
199
207
|
}
|
|
200
|
-
try {
|
|
201
|
-
switch (typeof props.projectApps) {
|
|
202
|
-
case 'string':
|
|
203
|
-
axios.get(props.projectApps).then((res) => {
|
|
204
|
-
navLinkObj.value = res.data;
|
|
205
|
-
});
|
|
206
|
-
break;
|
|
207
|
-
case 'object':
|
|
208
|
-
navLinkObj.value = props.projectApps;
|
|
209
|
-
break;
|
|
210
|
-
default:
|
|
211
|
-
navLinkObj.value = {
|
|
212
|
-
"moduleLink": {
|
|
213
|
-
"apps": [],
|
|
214
|
-
"icon": "edit_document",
|
|
215
|
-
"name": "Module",
|
|
216
|
-
"url": "",
|
|
217
|
-
"mobileUrl": "",
|
|
218
|
-
"mobileAppRoute": "",
|
|
219
|
-
"clientId": null,
|
|
220
|
-
"selfIsApp": false
|
|
221
|
-
},
|
|
222
|
-
"generalLink": []
|
|
223
|
-
}
|
|
224
|
-
break;
|
|
225
|
-
}
|
|
226
|
-
} catch (e) {
|
|
227
|
-
navLinkObj.value = {
|
|
228
|
-
"moduleLink": {
|
|
229
|
-
"apps": [],
|
|
230
|
-
"icon": "edit_document",
|
|
231
|
-
"name": "Module",
|
|
232
|
-
"url": "",
|
|
233
|
-
"mobileUrl": "",
|
|
234
|
-
"mobileAppRoute": "",
|
|
235
|
-
"clientId": null,
|
|
236
|
-
"selfIsApp": false
|
|
237
|
-
},
|
|
238
|
-
"generalLink": []
|
|
239
|
-
}
|
|
208
|
+
try {
|
|
209
|
+
switch (typeof props.projectApps) {
|
|
210
|
+
case 'string':
|
|
211
|
+
axios.get(props.projectApps).then((res) => {
|
|
212
|
+
navLinkObj.value = res.data;
|
|
213
|
+
});
|
|
214
|
+
break;
|
|
215
|
+
case 'object':
|
|
216
|
+
navLinkObj.value = props.projectApps;
|
|
217
|
+
break;
|
|
218
|
+
default:
|
|
219
|
+
navLinkObj.value = {
|
|
220
|
+
"moduleLink": {
|
|
221
|
+
"apps": [],
|
|
222
|
+
"icon": "edit_document",
|
|
223
|
+
"name": "Module",
|
|
224
|
+
"url": "",
|
|
225
|
+
"mobileUrl": "",
|
|
226
|
+
"mobileAppRoute": "",
|
|
227
|
+
"clientId": null,
|
|
228
|
+
"selfIsApp": false
|
|
229
|
+
},
|
|
230
|
+
"generalLink": []
|
|
231
|
+
}
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
} catch (e) {
|
|
235
|
+
navLinkObj.value = {
|
|
236
|
+
"moduleLink": {
|
|
237
|
+
"apps": [],
|
|
238
|
+
"icon": "edit_document",
|
|
239
|
+
"name": "Module",
|
|
240
|
+
"url": "",
|
|
241
|
+
"mobileUrl": "",
|
|
242
|
+
"mobileAppRoute": "",
|
|
243
|
+
"clientId": null,
|
|
244
|
+
"selfIsApp": false
|
|
245
|
+
},
|
|
246
|
+
"generalLink": []
|
|
247
|
+
}
|
|
240
248
|
}
|
|
241
249
|
|
|
242
250
|
|
|
@@ -291,24 +299,48 @@
|
|
|
291
299
|
}
|
|
292
300
|
|
|
293
301
|
.navbar-main {
|
|
294
|
-
background-color: var(--gray-800);
|
|
295
|
-
|
|
296
302
|
.navbar-line-item {
|
|
297
303
|
--bs-navbar-nav-link-padding-x: 1rem;
|
|
298
304
|
}
|
|
299
|
-
|
|
300
305
|
.dropdown-menu {
|
|
301
306
|
max-height: 80vh;
|
|
302
307
|
}
|
|
303
308
|
}
|
|
304
309
|
|
|
310
|
+
|
|
311
|
+
.navbar[data-bs-theme="dark"], .navbar-main {
|
|
312
|
+
background-color: var(--gray-900);
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
.navbar-line-item.active {
|
|
316
|
+
background-color: var(--gray-800);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
.navbar-tab{
|
|
320
|
+
min-height: 60px;
|
|
321
|
+
padding-top: 0.75rem;
|
|
322
|
+
padding-left: 0.5rem;
|
|
323
|
+
.navbar-line-item{
|
|
324
|
+
min-height: auto;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
305
328
|
.navbar-line-item.dropdown .dropdown-menu {
|
|
306
329
|
z-index: $zindex-sticky + 1;
|
|
307
330
|
}
|
|
331
|
+
.navbar-line-item.dropdown .dropdown-toggle[aria-expanded=true]{
|
|
332
|
+
color: $white;
|
|
333
|
+
}
|
|
308
334
|
|
|
309
335
|
.info-project {
|
|
310
336
|
position: relative;
|
|
311
|
-
padding-left:
|
|
337
|
+
padding-left: 60px;
|
|
312
338
|
padding-right: 1rem;
|
|
313
339
|
}
|
|
340
|
+
|
|
341
|
+
.icon-shine{
|
|
342
|
+
background: linear-gradient(120deg, #fff 20%, #24BCE7 40%, #e8ecff 45%, #5872ff 60%, #fff 90%);
|
|
343
|
+
-webkit-background-clip: text;
|
|
344
|
+
color: transparent;
|
|
345
|
+
}
|
|
314
346
|
</style>
|
package/README.md
CHANGED
|
@@ -73,6 +73,7 @@
|
|
|
73
73
|
| 數值名稱 | 說明 | 必要 |
|
|
74
74
|
|------------------|-----------------------------------------------------------------|----|
|
|
75
75
|
| pictures-data | 格式為: `[{src: "", title: ""}]` | 是 |
|
|
76
|
+
| preview | 是否要顯示縮圖,可傳入 `true` or `false` | 否 |
|
|
76
77
|
| display-index | 預設 index 為 0 | 否 |
|
|
77
78
|
| preview-count | preview 的圖片陣列數量,預設為 5,可使用 `lightboxWithOverviewRef?.previewPictures` 與 `lightboxWithOverviewRef?.otherPictureCount` | 否 |
|
|
78
79
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Collapse } from 'bootstrap'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
mounted(el) {
|
|
5
|
-
Collapse.getOrCreateInstance(el, {
|
|
6
|
-
toggle: false
|
|
7
|
-
});
|
|
8
|
-
},
|
|
9
|
-
unmounted(el) {
|
|
10
|
-
var instance = Collapse.getOrCreateInstance(el);
|
|
11
|
-
instance.dispose();
|
|
12
|
-
}
|
|
1
|
+
import { Collapse } from 'bootstrap'
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
mounted(el) {
|
|
5
|
+
Collapse.getOrCreateInstance(el, {
|
|
6
|
+
toggle: false
|
|
7
|
+
});
|
|
8
|
+
},
|
|
9
|
+
unmounted(el) {
|
|
10
|
+
var instance = Collapse.getOrCreateInstance(el);
|
|
11
|
+
instance.dispose();
|
|
12
|
+
}
|
|
13
13
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Popover } from 'bootstrap'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
mounted(el) {
|
|
5
|
-
Popover.getOrCreateInstance(el);
|
|
6
|
-
},
|
|
7
|
-
unmounted(el) {
|
|
8
|
-
var instance = Popover.getOrCreateInstance(el);
|
|
9
|
-
instance.dispose();
|
|
10
|
-
}
|
|
1
|
+
import { Popover } from 'bootstrap'
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
mounted(el) {
|
|
5
|
+
Popover.getOrCreateInstance(el);
|
|
6
|
+
},
|
|
7
|
+
unmounted(el) {
|
|
8
|
+
var instance = Popover.getOrCreateInstance(el);
|
|
9
|
+
instance.dispose();
|
|
10
|
+
}
|
|
11
11
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Tooltip } from 'bootstrap'
|
|
2
|
-
|
|
3
|
-
export default {
|
|
4
|
-
mounted(el) {
|
|
5
|
-
Tooltip.getOrCreateInstance(el);
|
|
6
|
-
},
|
|
7
|
-
unmounted(el) {
|
|
8
|
-
var instance = Tooltip.getOrCreateInstance(el);
|
|
9
|
-
instance.dispose();
|
|
10
|
-
}
|
|
1
|
+
import { Tooltip } from 'bootstrap'
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
mounted(el) {
|
|
5
|
+
Tooltip.getOrCreateInstance(el);
|
|
6
|
+
},
|
|
7
|
+
unmounted(el) {
|
|
8
|
+
var instance = Tooltip.getOrCreateInstance(el);
|
|
9
|
+
instance.dispose();
|
|
10
|
+
}
|
|
11
11
|
}
|
package/common/format.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import dayjs from 'dayjs';
|
|
2
|
-
import { computed } from 'vue';
|
|
3
|
-
|
|
4
|
-
// 時間格式
|
|
5
|
-
export const formatDate = (value) => {
|
|
6
|
-
if (value === null || !value) {
|
|
7
|
-
return value;
|
|
8
|
-
} else {
|
|
9
|
-
return dayjs(value).format('YYYY-MM-DD');
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const formatDT = (value) => {
|
|
14
|
-
if (value === null || !value) {
|
|
15
|
-
return value;
|
|
16
|
-
} else {
|
|
17
|
-
return dayjs(value).format('YYYY-MM-DD HH:mm:ss');
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// 千分位格式
|
|
23
|
-
export const formatThousands = computed(() => {
|
|
24
|
-
return function(number){
|
|
25
|
-
return new Intl.NumberFormat().format(number);
|
|
26
|
-
}
|
|
1
|
+
import dayjs from 'dayjs';
|
|
2
|
+
import { computed } from 'vue';
|
|
3
|
+
|
|
4
|
+
// 時間格式
|
|
5
|
+
export const formatDate = (value) => {
|
|
6
|
+
if (value === null || !value) {
|
|
7
|
+
return value;
|
|
8
|
+
} else {
|
|
9
|
+
return dayjs(value).format('YYYY-MM-DD');
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const formatDT = (value) => {
|
|
14
|
+
if (value === null || !value) {
|
|
15
|
+
return value;
|
|
16
|
+
} else {
|
|
17
|
+
return dayjs(value).format('YYYY-MM-DD HH:mm:ss');
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
// 千分位格式
|
|
23
|
+
export const formatThousands = computed(() => {
|
|
24
|
+
return function(number){
|
|
25
|
+
return new Intl.NumberFormat().format(number);
|
|
26
|
+
}
|
|
27
27
|
});
|
package/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import paginate from "./paginate.vue";
|
|
2
|
-
import tagEditor from "./tagEditor.vue";
|
|
3
|
-
import tree from "./tree.vue";
|
|
4
|
-
import vueLoadingOverlay from "./vueLoadingOverlay.vue";
|
|
5
|
-
import projectNavbar from "./ProjectManagement/projectNavbar.vue";
|
|
6
|
-
|
|
7
|
-
export default {
|
|
8
|
-
paginate,
|
|
9
|
-
tagEditor,
|
|
10
|
-
tree,
|
|
11
|
-
vueLoadingOverlay,
|
|
12
|
-
|
|
13
|
-
// ProjectManagement
|
|
14
|
-
projectNavbar
|
|
1
|
+
import paginate from "./paginate.vue";
|
|
2
|
+
import tagEditor from "./tagEditor.vue";
|
|
3
|
+
import tree from "./tree.vue";
|
|
4
|
+
import vueLoadingOverlay from "./vueLoadingOverlay.vue";
|
|
5
|
+
import projectNavbar from "./ProjectManagement/projectNavbar.vue";
|
|
6
|
+
|
|
7
|
+
export default {
|
|
8
|
+
paginate,
|
|
9
|
+
tagEditor,
|
|
10
|
+
tree,
|
|
11
|
+
vueLoadingOverlay,
|
|
12
|
+
|
|
13
|
+
// ProjectManagement
|
|
14
|
+
projectNavbar
|
|
15
15
|
}
|