@neutron.co.id/operasional-interfaces 1.17.30 → 1.17.32
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/build/@office/config.mjs +3 -0
- package/build/@office/models/personalia/submission/SubmissionAction/SubmissionAction.vue +313 -0
- package/build/@office/models/personalia/submission/SubmissionAction/SubmissionActionDecision.vue +189 -0
- package/build/@office/models/personalia/submission/SubmissionAction/index.d.ts +2 -0
- package/build/@office/models/personalia/submission/SubmissionAction/index.mjs +2 -0
- package/build/@office/models/personalia/submission/SubmissionAudit.vue +76 -35
- package/build/@office/models/personalia/submission/SubmissionFollowUp.vue +4 -1
- package/build/@office/models/personalia/submission/SubmissionForDecision.vue +4 -1
- package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteModal.vue +94 -0
- package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteViewModal.vue +149 -0
- package/build/@office/models/personalia/submission/SubmissionNoteModal/index.d.ts +1 -0
- package/build/@office/models/personalia/submission/SubmissionNoteModal/index.mjs +1 -0
- package/build/@office/models/personalia/submission/SubmissionStaff.vue +14 -0
- package/build/@office/models/personalia/submission/SubmissionSupervisor.vue +4 -1
- package/build/@office/models/personalia/submission/index.d.ts +2 -0
- package/build/@office/models/personalia/submission/index.mjs +2 -0
- package/build/@package/@office/models/personalia/submission/SubmissionAction/SubmissionAction.vue.d.ts +2 -0
- package/build/@package/@office/models/personalia/submission/SubmissionAction/SubmissionActionDecision.vue.d.ts +2 -0
- package/build/@package/@office/models/personalia/submission/SubmissionAction/index.d.ts +2 -0
- package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteModal.vue.d.ts +56 -0
- package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteViewModal.vue.d.ts +46 -0
- package/build/@package/@office/models/personalia/submission/SubmissionNoteModal/index.d.ts +1 -0
- package/build/@package/@office/models/personalia/submission/index.d.ts +2 -0
- package/build/mock/index.cjs +1114 -471
- package/build/mock/index.mjs +1116 -473
- package/build/mock/style.css +232 -14
- package/build/module.json +1 -1
- package/build/nuxt.json +1 -1
- package/build/nuxt.mjs +3 -0
- package/package.json +5 -5
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
isNew ||
|
|
24
24
|
isChanged ||
|
|
25
25
|
values.status === 'prepared' ||
|
|
26
|
+
values.status === 'waitForAudit' ||
|
|
26
27
|
values.status === 'raised' ||
|
|
27
28
|
values.status === 'processed' ||
|
|
28
29
|
values.status === 'delay' ||
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
isNew ||
|
|
47
48
|
isChanged ||
|
|
48
49
|
values.status === 'prepared' ||
|
|
50
|
+
values.status === 'waitForAudit' ||
|
|
49
51
|
values.status === 'raised' ||
|
|
50
52
|
values.status === 'processed' ||
|
|
51
53
|
values.status === 'delay' ||
|
|
@@ -69,6 +71,7 @@
|
|
|
69
71
|
isNew ||
|
|
70
72
|
isChanged ||
|
|
71
73
|
values.status === 'prepared' ||
|
|
74
|
+
values.status === 'waitForAudit' ||
|
|
72
75
|
values.status === 'raised' ||
|
|
73
76
|
values.status === 'processed' ||
|
|
74
77
|
values.status === 'delay' ||
|
|
@@ -136,6 +139,7 @@
|
|
|
136
139
|
:is-disabled="
|
|
137
140
|
values.status === 'processed' ||
|
|
138
141
|
values.status === 'approved' ||
|
|
142
|
+
values.status === 'waitForAudit' ||
|
|
139
143
|
values.status === 'raised' ||
|
|
140
144
|
values.status === 'delay' ||
|
|
141
145
|
values.status === 'monitored' ||
|
|
@@ -150,6 +154,7 @@
|
|
|
150
154
|
:is-disabled="
|
|
151
155
|
values.status === 'processed' ||
|
|
152
156
|
values.status === 'approved' ||
|
|
157
|
+
values.status === 'waitForAudit' ||
|
|
153
158
|
values.status === 'raised' ||
|
|
154
159
|
values.status === 'delay' ||
|
|
155
160
|
values.status === 'monitored' ||
|
|
@@ -158,27 +163,59 @@
|
|
|
158
163
|
"
|
|
159
164
|
/>
|
|
160
165
|
|
|
161
|
-
<
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
<NeonFields md="grid-cols-3">
|
|
167
|
+
<OfficeRelation
|
|
168
|
+
v-model="values"
|
|
169
|
+
:field="fields.branches"
|
|
170
|
+
:query="Query.define(branchOptions)"
|
|
171
|
+
:is-disabled="
|
|
172
|
+
values.status === 'processed' ||
|
|
173
|
+
values.status === 'waitForAudit' ||
|
|
174
|
+
values.status === 'approved' ||
|
|
175
|
+
values.status === 'raised' ||
|
|
176
|
+
values.status === 'delay' ||
|
|
177
|
+
values.status === 'monitored' ||
|
|
178
|
+
values.status === 'discontinued' ||
|
|
179
|
+
values.status === 'resolved'
|
|
180
|
+
"
|
|
181
|
+
/>
|
|
175
182
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
183
|
+
<OfficeRelation
|
|
184
|
+
v-model="values"
|
|
185
|
+
:field="fields.type"
|
|
186
|
+
:query="Query.define(typeOptions)"
|
|
187
|
+
:is-disabled="
|
|
188
|
+
values.status === 'processed' ||
|
|
189
|
+
values.status === 'waitForAudit' ||
|
|
190
|
+
values.status === 'approved' ||
|
|
191
|
+
values.status === 'raised' ||
|
|
192
|
+
values.status === 'delay' ||
|
|
193
|
+
values.status === 'monitored' ||
|
|
194
|
+
values.status === 'discontinued' ||
|
|
195
|
+
values.status === 'resolved'
|
|
196
|
+
"
|
|
197
|
+
/>
|
|
198
|
+
<OfficeRelation
|
|
199
|
+
v-model="values"
|
|
200
|
+
:field="fields.department"
|
|
201
|
+
:is-disabled="
|
|
202
|
+
values.status === 'raised' ||
|
|
203
|
+
values.status === 'processed' ||
|
|
204
|
+
values.status === 'waitForAudit' ||
|
|
205
|
+
values.status === 'delay' ||
|
|
206
|
+
values.status === 'approved' ||
|
|
207
|
+
values.status === 'monitored' ||
|
|
208
|
+
values.status === 'discontinued' ||
|
|
209
|
+
values.status === 'resolved'
|
|
210
|
+
"
|
|
211
|
+
/>
|
|
212
|
+
</NeonFields>
|
|
213
|
+
<NeonField
|
|
214
|
+
v-model="values.deadline"
|
|
215
|
+
v-bind="fields.deadline"
|
|
180
216
|
:is-disabled="
|
|
181
217
|
values.status === 'processed' ||
|
|
218
|
+
values.status === 'waitForAudit' ||
|
|
182
219
|
values.status === 'approved' ||
|
|
183
220
|
values.status === 'raised' ||
|
|
184
221
|
values.status === 'delay' ||
|
|
@@ -187,19 +224,6 @@
|
|
|
187
224
|
values.status === 'resolved'
|
|
188
225
|
"
|
|
189
226
|
/>
|
|
190
|
-
<OfficeRelation
|
|
191
|
-
v-model="values"
|
|
192
|
-
:field="fields.department"
|
|
193
|
-
:is-disabled="
|
|
194
|
-
values.status === 'raised' ||
|
|
195
|
-
values.status === 'processed' ||
|
|
196
|
-
values.status === 'delay' ||
|
|
197
|
-
values.status === 'approved' ||
|
|
198
|
-
values.status === 'monitored' ||
|
|
199
|
-
values.status === 'discontinued' ||
|
|
200
|
-
values.status === 'resolved'
|
|
201
|
-
"
|
|
202
|
-
/>
|
|
203
227
|
|
|
204
228
|
<div class="flex items-right">
|
|
205
229
|
<div class="flex-grow">
|
|
@@ -207,14 +231,18 @@
|
|
|
207
231
|
<OfficeRelation
|
|
208
232
|
v-model="values"
|
|
209
233
|
:field="fields.submissionStaffs"
|
|
210
|
-
:columns="['nik', 'name']"
|
|
234
|
+
:columns="['nik', 'name', 'branches']"
|
|
211
235
|
:fragment="{
|
|
212
236
|
nik: 1,
|
|
213
237
|
name: 1,
|
|
238
|
+
branches: {
|
|
239
|
+
name: 1,
|
|
240
|
+
},
|
|
214
241
|
}"
|
|
215
242
|
:query="Query.define(submissionStaffOptions)"
|
|
216
243
|
:is-disabled="
|
|
217
244
|
values.status === 'processed' ||
|
|
245
|
+
values.status === 'waitForAudit' ||
|
|
218
246
|
values.status === 'approved' ||
|
|
219
247
|
values.status === 'raised' ||
|
|
220
248
|
values.status === 'delay' ||
|
|
@@ -239,14 +267,18 @@
|
|
|
239
267
|
<OfficeRelation
|
|
240
268
|
v-model="values"
|
|
241
269
|
:field="fields.raiseStaffs"
|
|
242
|
-
:columns="['nik', 'name']"
|
|
270
|
+
:columns="['nik', 'name', 'branches']"
|
|
243
271
|
:fragment="{
|
|
244
272
|
nik: 1,
|
|
245
273
|
name: 1,
|
|
274
|
+
branches: {
|
|
275
|
+
name: 1,
|
|
276
|
+
},
|
|
246
277
|
}"
|
|
247
278
|
:query="Query.define(roleStaffOptions)"
|
|
248
279
|
:is-disabled="
|
|
249
280
|
values.status === 'processed' ||
|
|
281
|
+
values.status === 'waitForAudit' ||
|
|
250
282
|
values.status === 'approved' ||
|
|
251
283
|
values.status === 'delay' ||
|
|
252
284
|
values.status === 'monitored' ||
|
|
@@ -270,14 +302,18 @@
|
|
|
270
302
|
<OfficeRelation
|
|
271
303
|
v-model="values"
|
|
272
304
|
:field="fields.decideStaffs"
|
|
273
|
-
:columns="['nik', 'name']"
|
|
305
|
+
:columns="['nik', 'name', 'branches']"
|
|
274
306
|
:fragment="{
|
|
275
307
|
nik: 1,
|
|
276
308
|
name: 1,
|
|
309
|
+
branches: {
|
|
310
|
+
name: 1,
|
|
311
|
+
},
|
|
277
312
|
}"
|
|
278
313
|
:query="Query.define(roleDecideStaffOptions)"
|
|
279
314
|
:is-disabled="
|
|
280
315
|
values.status === 'processed' ||
|
|
316
|
+
values.status === 'waitForAudit' ||
|
|
281
317
|
values.status === 'approved' ||
|
|
282
318
|
values.status === 'raised' ||
|
|
283
319
|
values.status === 'delay' ||
|
|
@@ -299,10 +335,13 @@
|
|
|
299
335
|
<OfficeRelation
|
|
300
336
|
v-model="values"
|
|
301
337
|
:field="fields.followUpStaffs"
|
|
302
|
-
:columns="['nik', 'name']"
|
|
338
|
+
:columns="['nik', 'name', 'branches']"
|
|
303
339
|
:fragment="{
|
|
304
340
|
nik: 1,
|
|
305
341
|
name: 1,
|
|
342
|
+
branches: {
|
|
343
|
+
name: 1,
|
|
344
|
+
},
|
|
306
345
|
}"
|
|
307
346
|
/>
|
|
308
347
|
</NeonFields>
|
|
@@ -337,6 +376,7 @@
|
|
|
337
376
|
v-bind="fields.workingHours"
|
|
338
377
|
:is-disabled="
|
|
339
378
|
values.status === 'processed' ||
|
|
379
|
+
values.status === 'waitForAudit' ||
|
|
340
380
|
values.status === 'approved' ||
|
|
341
381
|
values.status === 'raised' ||
|
|
342
382
|
values.status === 'delay' ||
|
|
@@ -400,6 +440,7 @@
|
|
|
400
440
|
toolbar="side"
|
|
401
441
|
:is-readonly="
|
|
402
442
|
values.status === 'processed' ||
|
|
443
|
+
values.status === 'waitForAudit' ||
|
|
403
444
|
values.status === 'approved' ||
|
|
404
445
|
values.status === 'monitored' ||
|
|
405
446
|
values.status === 'discontinued' ||
|
|
@@ -125,10 +125,13 @@ const copy = ref({
|
|
|
125
125
|
<OfficeRelation
|
|
126
126
|
v-model="values"
|
|
127
127
|
:field="fields.followUpStaffs"
|
|
128
|
-
:columns="['nik', 'name']"
|
|
128
|
+
:columns="['nik', 'name', 'branches']"
|
|
129
129
|
:fragment="{
|
|
130
130
|
nik: 1,
|
|
131
131
|
name: 1,
|
|
132
|
+
branches: {
|
|
133
|
+
name: 1,
|
|
134
|
+
},
|
|
132
135
|
}"
|
|
133
136
|
/>
|
|
134
137
|
</NeonFields>
|
|
@@ -360,10 +360,13 @@ const copy = ref({
|
|
|
360
360
|
<OfficeRelation
|
|
361
361
|
v-model="values"
|
|
362
362
|
:field="fields.followUpStaffs"
|
|
363
|
-
:columns="['nik', 'name']"
|
|
363
|
+
:columns="['nik', 'name', 'branches']"
|
|
364
364
|
:fragment="{
|
|
365
365
|
nik: 1,
|
|
366
366
|
name: 1,
|
|
367
|
+
branches: {
|
|
368
|
+
name: 1,
|
|
369
|
+
},
|
|
367
370
|
}"
|
|
368
371
|
/>
|
|
369
372
|
</NeonFields>
|
package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteModal.vue
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { NeonButton, NeonModal, NeonSheet } from '@neon.id/interfaces'
|
|
3
|
+
import { NeonTextarea } from '@neon.id/form'
|
|
4
|
+
import { ref, watch } from 'vue'
|
|
5
|
+
|
|
6
|
+
defineOptions({ name: 'SubmissionNoteModal' })
|
|
7
|
+
|
|
8
|
+
const props = defineProps({
|
|
9
|
+
isActive: {
|
|
10
|
+
type: Boolean,
|
|
11
|
+
default: false,
|
|
12
|
+
},
|
|
13
|
+
submissionId: {
|
|
14
|
+
type: String,
|
|
15
|
+
default: '',
|
|
16
|
+
},
|
|
17
|
+
note: {
|
|
18
|
+
type: String,
|
|
19
|
+
default: '',
|
|
20
|
+
},
|
|
21
|
+
isDisabled: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false,
|
|
24
|
+
},
|
|
25
|
+
isSaving: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false,
|
|
28
|
+
},
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
const emit = defineEmits(['close', 'save'])
|
|
32
|
+
|
|
33
|
+
const noteInput = ref(props.note)
|
|
34
|
+
|
|
35
|
+
watch(
|
|
36
|
+
() => props.note,
|
|
37
|
+
(newValue) => {
|
|
38
|
+
noteInput.value = newValue
|
|
39
|
+
},
|
|
40
|
+
)
|
|
41
|
+
</script>
|
|
42
|
+
|
|
43
|
+
<template>
|
|
44
|
+
<NeonModal size="lg" :is-active="isActive" @close="$emit('close')">
|
|
45
|
+
<NeonSheet title="Catatan Pengawas" @close="$emit('close')">
|
|
46
|
+
<div class="submission-note-modal">
|
|
47
|
+
<span class="label">Detail Catatan</span>
|
|
48
|
+
<NeonTextarea
|
|
49
|
+
v-model="noteInput"
|
|
50
|
+
placeholder="Silahkan berikan detail catatan"
|
|
51
|
+
:rows="5"
|
|
52
|
+
:is-disabled="isDisabled"
|
|
53
|
+
is-full
|
|
54
|
+
/>
|
|
55
|
+
<ul class="list-disc pl-5">
|
|
56
|
+
<li>
|
|
57
|
+
<span class="text-sm">
|
|
58
|
+
Catatan ini bersifat privat dan hanya dapat dibaca oleh Anda serta
|
|
59
|
+
pihak penyetuju.
|
|
60
|
+
</span>
|
|
61
|
+
</li>
|
|
62
|
+
</ul>
|
|
63
|
+
</div>
|
|
64
|
+
<template #footer>
|
|
65
|
+
<div class="w-full py-4">
|
|
66
|
+
<NeonButton
|
|
67
|
+
label="Simpan Catatan"
|
|
68
|
+
color="dark"
|
|
69
|
+
display="fill"
|
|
70
|
+
:is-disabled="!noteInput || isSaving || isDisabled"
|
|
71
|
+
:is-loading="isSaving"
|
|
72
|
+
is-full
|
|
73
|
+
@click="emit('save', noteInput)"
|
|
74
|
+
/>
|
|
75
|
+
</div>
|
|
76
|
+
</template>
|
|
77
|
+
</NeonSheet>
|
|
78
|
+
</NeonModal>
|
|
79
|
+
</template>
|
|
80
|
+
|
|
81
|
+
<style scoped>
|
|
82
|
+
.submission-note-modal {
|
|
83
|
+
@apply flex flex-col gap-4;
|
|
84
|
+
|
|
85
|
+
.label {
|
|
86
|
+
@apply text-base font-medium text-black;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
:deep(.neon-sheet-footer) {
|
|
90
|
+
height: 70px !important;
|
|
91
|
+
padding-top: 20px !important;
|
|
92
|
+
padding-bottom: 20px !important;
|
|
93
|
+
}
|
|
94
|
+
</style>
|
package/build/@office/models/personalia/submission/SubmissionNoteModal/SubmissionNoteViewModal.vue
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
<script lang="ts" setup>
|
|
2
|
+
import { NeonIcon, NeonModal, NeonSheet } from '@neon.id/interfaces'
|
|
3
|
+
import { ref, computed, type PropType } from 'vue'
|
|
4
|
+
|
|
5
|
+
defineOptions({ name: 'SubmissionNoteViewModal' })
|
|
6
|
+
|
|
7
|
+
interface SubmissionNoteOwner {
|
|
8
|
+
id: string
|
|
9
|
+
name: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
interface SubmissionNote {
|
|
13
|
+
id: string
|
|
14
|
+
note: string
|
|
15
|
+
owner: SubmissionNoteOwner
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface StaffNoteGroup {
|
|
19
|
+
staffId: string
|
|
20
|
+
staffName: string
|
|
21
|
+
notes: SubmissionNote[]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const props = defineProps({
|
|
25
|
+
isActive: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false,
|
|
28
|
+
},
|
|
29
|
+
submissionId: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: '',
|
|
32
|
+
},
|
|
33
|
+
notes: {
|
|
34
|
+
type: Array as PropType<SubmissionNote[]>,
|
|
35
|
+
default: () => [],
|
|
36
|
+
},
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
defineEmits(['close'])
|
|
40
|
+
|
|
41
|
+
const expanded = ref<Record<string, boolean>>({})
|
|
42
|
+
|
|
43
|
+
const groupedNotes = computed<StaffNoteGroup[]>(() => {
|
|
44
|
+
const map = new Map<string, StaffNoteGroup>()
|
|
45
|
+
for (const item of props.notes) {
|
|
46
|
+
const group = map.get(item.owner.id)
|
|
47
|
+
if (group) {
|
|
48
|
+
group.notes.push(item)
|
|
49
|
+
} else {
|
|
50
|
+
map.set(item.owner.id, {
|
|
51
|
+
staffId: item.owner.id,
|
|
52
|
+
staffName: item.owner.name,
|
|
53
|
+
notes: [item],
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return Array.from(map.values())
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
function toggle(staffId: string) {
|
|
61
|
+
expanded.value[staffId] = !expanded.value[staffId]
|
|
62
|
+
}
|
|
63
|
+
</script>
|
|
64
|
+
|
|
65
|
+
<template>
|
|
66
|
+
<NeonModal size="lg" :is-active="isActive" @close="$emit('close')">
|
|
67
|
+
<NeonSheet title="Catatan Pengawas" @close="$emit('close')">
|
|
68
|
+
<div class="submission-note-modal">
|
|
69
|
+
<div v-if="groupedNotes.length" class="note-list">
|
|
70
|
+
<div
|
|
71
|
+
v-for="group in groupedNotes"
|
|
72
|
+
:key="group.staffId"
|
|
73
|
+
class="note-group"
|
|
74
|
+
>
|
|
75
|
+
<button
|
|
76
|
+
type="button"
|
|
77
|
+
class="note-group-header"
|
|
78
|
+
@click="toggle(group.staffId)"
|
|
79
|
+
>
|
|
80
|
+
<span class="staff-name break-words text-left">
|
|
81
|
+
{{ group.staffName }}
|
|
82
|
+
</span>
|
|
83
|
+
<NeonIcon
|
|
84
|
+
:name="expanded[group.staffId] ? 'chevron-up' : 'chevron-down'"
|
|
85
|
+
class="chevron"
|
|
86
|
+
/>
|
|
87
|
+
</button>
|
|
88
|
+
<div v-if="expanded[group.staffId]" class="note-group-body">
|
|
89
|
+
<div
|
|
90
|
+
v-for="item in group.notes"
|
|
91
|
+
:key="item.id"
|
|
92
|
+
class="note-item break-words whitespace-pre-wrap"
|
|
93
|
+
>
|
|
94
|
+
{{ item.note }}
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
<span v-else class="empty">Belum ada catatan.</span>
|
|
100
|
+
<ul class="list-disc pl-5">
|
|
101
|
+
<li>
|
|
102
|
+
<span class="text-sm">
|
|
103
|
+
Seluruh catatan bersifat privat dan hanya dapat diakses oleh pihak
|
|
104
|
+
yang terkait.
|
|
105
|
+
</span>
|
|
106
|
+
</li>
|
|
107
|
+
</ul>
|
|
108
|
+
</div>
|
|
109
|
+
</NeonSheet>
|
|
110
|
+
</NeonModal>
|
|
111
|
+
</template>
|
|
112
|
+
|
|
113
|
+
<style scoped>
|
|
114
|
+
.submission-note-modal {
|
|
115
|
+
@apply flex flex-col gap-4;
|
|
116
|
+
|
|
117
|
+
.note-list {
|
|
118
|
+
@apply flex flex-col gap-2;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
.note-group {
|
|
122
|
+
@apply border-b-[1px] border-gray-200 bg-white;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.note-group-header {
|
|
126
|
+
@apply flex w-full items-center justify-between px-4 py-3 text-left;
|
|
127
|
+
|
|
128
|
+
.staff-name {
|
|
129
|
+
@apply text-base font-medium text-black;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.chevron {
|
|
133
|
+
@apply h-4 w-4 text-gray-500;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.note-group-body {
|
|
138
|
+
@apply flex flex-col gap-2 px-4 py-3;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.note-item {
|
|
142
|
+
@apply whitespace-pre-wrap text-sm text-gray-800;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.empty {
|
|
146
|
+
@apply text-sm text-gray-500;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SubmissionNoteModal } from './SubmissionNoteModal.vue';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SubmissionNoteModal } from "./SubmissionNoteModal.vue";
|
|
@@ -98,6 +98,20 @@
|
|
|
98
98
|
"
|
|
99
99
|
/>
|
|
100
100
|
</NeonFields>
|
|
101
|
+
<NeonField
|
|
102
|
+
v-model="values.deadline"
|
|
103
|
+
v-bind="fields.deadline"
|
|
104
|
+
:is-disabled="
|
|
105
|
+
values.status === 'processed' ||
|
|
106
|
+
values.status === 'waitForAudit' ||
|
|
107
|
+
values.status === 'approved' ||
|
|
108
|
+
values.status === 'raised' ||
|
|
109
|
+
values.status === 'delay' ||
|
|
110
|
+
values.status === 'monitored' ||
|
|
111
|
+
values.status === 'discontinued' ||
|
|
112
|
+
values.status === 'resolved'
|
|
113
|
+
"
|
|
114
|
+
/>
|
|
101
115
|
|
|
102
116
|
<OfficeRelation
|
|
103
117
|
v-model="values"
|
|
@@ -125,10 +125,13 @@ const copy = ref({
|
|
|
125
125
|
<OfficeRelation
|
|
126
126
|
v-model="values"
|
|
127
127
|
:field="fields.followUpStaffs"
|
|
128
|
-
:columns="['nik', 'name']"
|
|
128
|
+
:columns="['nik', 'name', 'branches']"
|
|
129
129
|
:fragment="{
|
|
130
130
|
nik: 1,
|
|
131
131
|
name: 1,
|
|
132
|
+
branches: {
|
|
133
|
+
name: 1,
|
|
134
|
+
},
|
|
132
135
|
}"
|
|
133
136
|
/>
|
|
134
137
|
</NeonFields>
|
|
@@ -7,3 +7,5 @@ export { default as SubmissionForDecision } from './SubmissionForDecision.vue';
|
|
|
7
7
|
export { default as SubmissionSupervisor } from './SubmissionSupervisor.vue';
|
|
8
8
|
export * from './SubmissionCollection';
|
|
9
9
|
export * from './SubmissionSingle';
|
|
10
|
+
export * from './SubmissionAction';
|
|
11
|
+
export * from './SubmissionNoteModal';
|
|
@@ -7,3 +7,5 @@ export { default as SubmissionForDecision } from "./SubmissionForDecision.vue";
|
|
|
7
7
|
export { default as SubmissionSupervisor } from "./SubmissionSupervisor.vue";
|
|
8
8
|
export * from "./SubmissionCollection/index.mjs";
|
|
9
9
|
export * from "./SubmissionSingle/index.mjs";
|
|
10
|
+
export * from "./SubmissionAction/index.mjs";
|
|
11
|
+
export * from "./SubmissionNoteModal/index.mjs";
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<{
|
|
2
|
+
isActive: {
|
|
3
|
+
type: BooleanConstructor;
|
|
4
|
+
default: boolean;
|
|
5
|
+
};
|
|
6
|
+
submissionId: {
|
|
7
|
+
type: StringConstructor;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
note: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
default: string;
|
|
13
|
+
};
|
|
14
|
+
isDisabled: {
|
|
15
|
+
type: BooleanConstructor;
|
|
16
|
+
default: boolean;
|
|
17
|
+
};
|
|
18
|
+
isSaving: {
|
|
19
|
+
type: BooleanConstructor;
|
|
20
|
+
default: boolean;
|
|
21
|
+
};
|
|
22
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
23
|
+
close: (...args: any[]) => void;
|
|
24
|
+
save: (...args: any[]) => void;
|
|
25
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
26
|
+
isActive: {
|
|
27
|
+
type: BooleanConstructor;
|
|
28
|
+
default: boolean;
|
|
29
|
+
};
|
|
30
|
+
submissionId: {
|
|
31
|
+
type: StringConstructor;
|
|
32
|
+
default: string;
|
|
33
|
+
};
|
|
34
|
+
note: {
|
|
35
|
+
type: StringConstructor;
|
|
36
|
+
default: string;
|
|
37
|
+
};
|
|
38
|
+
isDisabled: {
|
|
39
|
+
type: BooleanConstructor;
|
|
40
|
+
default: boolean;
|
|
41
|
+
};
|
|
42
|
+
isSaving: {
|
|
43
|
+
type: BooleanConstructor;
|
|
44
|
+
default: boolean;
|
|
45
|
+
};
|
|
46
|
+
}>> & {
|
|
47
|
+
onClose?: ((...args: any[]) => any) | undefined;
|
|
48
|
+
onSave?: ((...args: any[]) => any) | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
isDisabled: boolean;
|
|
51
|
+
isActive: boolean;
|
|
52
|
+
note: string;
|
|
53
|
+
submissionId: string;
|
|
54
|
+
isSaving: boolean;
|
|
55
|
+
}, {}>;
|
|
56
|
+
export default _default;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type PropType } from 'vue';
|
|
2
|
+
interface SubmissionNoteOwner {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
interface SubmissionNote {
|
|
7
|
+
id: string;
|
|
8
|
+
note: string;
|
|
9
|
+
owner: SubmissionNoteOwner;
|
|
10
|
+
}
|
|
11
|
+
declare const _default: import("vue").DefineComponent<{
|
|
12
|
+
isActive: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
default: boolean;
|
|
15
|
+
};
|
|
16
|
+
submissionId: {
|
|
17
|
+
type: StringConstructor;
|
|
18
|
+
default: string;
|
|
19
|
+
};
|
|
20
|
+
notes: {
|
|
21
|
+
type: PropType<SubmissionNote[]>;
|
|
22
|
+
default: () => never[];
|
|
23
|
+
};
|
|
24
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
25
|
+
close: (...args: any[]) => void;
|
|
26
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
27
|
+
isActive: {
|
|
28
|
+
type: BooleanConstructor;
|
|
29
|
+
default: boolean;
|
|
30
|
+
};
|
|
31
|
+
submissionId: {
|
|
32
|
+
type: StringConstructor;
|
|
33
|
+
default: string;
|
|
34
|
+
};
|
|
35
|
+
notes: {
|
|
36
|
+
type: PropType<SubmissionNote[]>;
|
|
37
|
+
default: () => never[];
|
|
38
|
+
};
|
|
39
|
+
}>> & {
|
|
40
|
+
onClose?: ((...args: any[]) => any) | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
isActive: boolean;
|
|
43
|
+
notes: SubmissionNote[];
|
|
44
|
+
submissionId: string;
|
|
45
|
+
}, {}>;
|
|
46
|
+
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as SubmissionNoteModal } from './SubmissionNoteModal.vue';
|