@neutron.co.id/operasional-interfaces 1.17.25 → 1.17.27

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.
@@ -209,6 +209,10 @@
209
209
  <OfficeRelation
210
210
  v-model="values"
211
211
  :field="fields.submissionStaffs"
212
+ :fragment="{
213
+ nik: 1,
214
+ name: 1,
215
+ }"
212
216
  :query="Query.define(submissionStaffOptions)"
213
217
  :is-disabled="
214
218
  values.status === 'processed' ||
@@ -236,6 +240,10 @@
236
240
  <OfficeRelation
237
241
  v-model="values"
238
242
  :field="fields.raiseStaffs"
243
+ :fragment="{
244
+ nik: 1,
245
+ name: 1,
246
+ }"
239
247
  :query="Query.define(roleStaffOptions)"
240
248
  :is-disabled="
241
249
  values.status === 'processed' ||
@@ -262,6 +270,10 @@
262
270
  <OfficeRelation
263
271
  v-model="values"
264
272
  :field="fields.decideStaffs"
273
+ :fragment="{
274
+ nik: 1,
275
+ name: 1,
276
+ }"
265
277
  :query="Query.define(roleDecideStaffOptions)"
266
278
  :is-disabled="
267
279
  values.status === 'processed' ||
@@ -159,62 +159,75 @@ const copy = ref({
159
159
 
160
160
  <template>
161
161
  <NeonSingle class="neu-submission-single">
162
- <OfficeTabs :use-url="isMain">
163
- <!-- DOKUMEN -->
164
- <SubmissionDocumentTab
165
- toolbar="side"
166
- :is-readonly="
167
- values.status === 'raised' ||
168
- values.status === 'delay' ||
169
- values.status === 'approved' ||
170
- values.status === 'monitored' ||
171
- values.status === 'discontinued' ||
172
- values.status === 'resolved'
173
- "
174
- />
175
- <OfficeTab handle="info" icon="circle-info" title="Info">
176
- <NeonForm
177
- handle="info"
178
- :initial-values="initialValues"
179
- :is-loading="isLoading"
180
- :is-changed="isChanged"
181
- use-unsaved
182
- @cancel="discardChanges"
183
- @submit="saveOne"
162
+ <div class="single-wrapper">
163
+ <div
164
+ v-if="values.brand || values.department || values.title"
165
+ class="submission-header"
166
+ >
167
+ <span v-if="values.brand?.name" class="header-segment header-brand">
168
+ {{ values.brand.name }}
169
+ </span>
170
+ <NeonIcon
171
+ v-if="values.brand?.name && values.department?.name"
172
+ name="chevron-right"
173
+ class="header-sep"
174
+ />
175
+ <span
176
+ v-if="values.department?.name"
177
+ class="header-segment header-department"
184
178
  >
185
- <NeonField
186
- v-model="values.title"
187
- v-bind="fields.title"
188
- :is-disabled="
189
- values.status === 'raised' ||
190
- values.status === 'processed' ||
191
- values.status === 'delay' ||
192
- values.status === 'approved' ||
193
- values.status === 'monitored' ||
194
- values.status === 'discontinued' ||
195
- values.status === 'resolved'
196
- "
197
- />
179
+ {{ values.department.name }}
180
+ </span>
181
+ <NeonIcon
182
+ v-if="(values.brand?.name || values.department?.name) && values.title"
183
+ name="chevron-right"
184
+ class="header-sep"
185
+ />
186
+ <span v-if="values.title" class="header-segment header-title">
187
+ {{ values.title }}
188
+ </span>
189
+ </div>
198
190
 
199
- <NeonField
200
- v-model="values.nominal"
201
- v-bind="fields.nominal"
202
- :is-disabled="
203
- values.status === 'raised' ||
204
- values.status === 'processed' ||
205
- values.status === 'delay' ||
206
- values.status === 'approved' ||
207
- values.status === 'monitored' ||
208
- values.status === 'discontinued' ||
209
- values.status === 'resolved'
210
- "
211
- />
191
+ <OfficeTabs :use-url="isMain">
192
+ <!-- DOKUMEN -->
193
+ <SubmissionDocumentTab
194
+ toolbar="side"
195
+ :is-readonly="
196
+ values.status === 'raised' ||
197
+ values.status === 'delay' ||
198
+ values.status === 'approved' ||
199
+ values.status === 'monitored' ||
200
+ values.status === 'discontinued' ||
201
+ values.status === 'resolved'
202
+ "
203
+ />
204
+ <OfficeTab handle="info" icon="circle-info" title="Info">
205
+ <NeonForm
206
+ handle="info"
207
+ :initial-values="initialValues"
208
+ :is-loading="isLoading"
209
+ :is-changed="isChanged"
210
+ use-unsaved
211
+ @cancel="discardChanges"
212
+ @submit="saveOne"
213
+ >
214
+ <NeonField
215
+ v-model="values.title"
216
+ v-bind="fields.title"
217
+ :is-disabled="
218
+ values.status === 'raised' ||
219
+ values.status === 'processed' ||
220
+ values.status === 'delay' ||
221
+ values.status === 'approved' ||
222
+ values.status === 'monitored' ||
223
+ values.status === 'discontinued' ||
224
+ values.status === 'resolved'
225
+ "
226
+ />
212
227
 
213
- <NeonFields md="grid-cols-2">
214
- <OfficeRelation
215
- v-model="values"
216
- :field="fields.branches"
217
- :query="Query.define(branchOptions)"
228
+ <NeonField
229
+ v-model="values.nominal"
230
+ v-bind="fields.nominal"
218
231
  :is-disabled="
219
232
  values.status === 'raised' ||
220
233
  values.status === 'processed' ||
@@ -225,9 +238,40 @@ const copy = ref({
225
238
  values.status === 'resolved'
226
239
  "
227
240
  />
241
+
242
+ <NeonFields md="grid-cols-2">
243
+ <OfficeRelation
244
+ v-model="values"
245
+ :field="fields.branches"
246
+ :query="Query.define(branchOptions)"
247
+ :is-disabled="
248
+ values.status === 'raised' ||
249
+ values.status === 'processed' ||
250
+ values.status === 'delay' ||
251
+ values.status === 'approved' ||
252
+ values.status === 'monitored' ||
253
+ values.status === 'discontinued' ||
254
+ values.status === 'resolved'
255
+ "
256
+ />
257
+ <OfficeRelation
258
+ v-model="values"
259
+ :field="fields.department"
260
+ :is-disabled="
261
+ values.status === 'raised' ||
262
+ values.status === 'processed' ||
263
+ values.status === 'delay' ||
264
+ values.status === 'approved' ||
265
+ values.status === 'monitored' ||
266
+ values.status === 'discontinued' ||
267
+ values.status === 'resolved'
268
+ "
269
+ />
270
+ </NeonFields>
228
271
  <OfficeRelation
229
272
  v-model="values"
230
- :field="fields.department"
273
+ :field="fields.type"
274
+ :query="Query.define(typeOptions)"
231
275
  :is-disabled="
232
276
  values.status === 'raised' ||
233
277
  values.status === 'processed' ||
@@ -238,109 +282,94 @@ const copy = ref({
238
282
  values.status === 'resolved'
239
283
  "
240
284
  />
241
- </NeonFields>
242
- <OfficeRelation
243
- v-model="values"
244
- :field="fields.type"
245
- :query="Query.define(typeOptions)"
246
- :is-disabled="
247
- values.status === 'raised' ||
248
- values.status === 'processed' ||
249
- values.status === 'delay' ||
250
- values.status === 'approved' ||
251
- values.status === 'monitored' ||
252
- values.status === 'discontinued' ||
253
- values.status === 'resolved'
254
- "
255
- />
256
-
257
- <div class="flex items-right">
258
- <div class="flex-grow">
259
- <NeonFields class="flex-1">
260
- <OfficeRelation
261
- v-model="values"
262
- :field="fields.submissionStaffs"
263
- :query="Query.define(submissionStaffOptions)"
264
- :is-disabled="
265
- values.status === 'raised' ||
266
- values.status === 'processed' ||
267
- values.status === 'delay' ||
268
- values.status === 'approved' ||
269
- values.status === 'monitored' ||
270
- values.status === 'discontinued' ||
271
- values.status === 'resolved'
272
- "
273
- />
274
- </NeonFields>
275
- </div>
276
- <div class="ml-2 flex items-end pb-1">
277
- <NeonCopy :size="'sm'" :value="copy.staff" />
278
- </div>
279
- </div>
280
-
281
- <div class="flex items-right">
282
- <div class="flex-grow">
283
- <NeonFields class="flex-1">
284
- <OfficeRelation
285
- v-model="values"
286
- :field="fields.raiseStaffs"
287
- :query="Query.define(roleRaiseStaffOptions)"
288
- :is-disabled="
289
- values.status === 'raised' ||
290
- values.status === 'processed' ||
291
- values.status === 'delay' ||
292
- values.status === 'approved' ||
293
- values.status === 'monitored' ||
294
- values.status === 'discontinued' ||
295
- values.status === 'resolved'
296
- "
297
- />
298
- </NeonFields>
299
- </div>
300
- <div class="ml-2 flex items-end pb-1">
301
- <NeonCopy :size="'sm'" :value="copy.raise" />
302
- </div>
303
- </div>
304
-
305
- <div class="flex items-right">
306
- <div class="flex-grow">
307
- <NeonFields class="flex-1">
308
- <OfficeRelation
309
- v-model="values"
310
- :field="fields.decideStaffs"
311
- :query="Query.define(roleDecideStaffOptions)"
312
- :is-disabled="
313
- values.status === 'raised' ||
314
- values.status === 'processed' ||
315
- values.status === 'delay' ||
316
- values.status === 'approved' ||
317
- values.status === 'monitored' ||
318
- values.status === 'discontinued' ||
319
- values.status === 'resolved'
320
- "
321
- />
322
- </NeonFields>
285
+
286
+ <div class="flex items-right">
287
+ <div class="flex-grow">
288
+ <NeonFields class="flex-1">
289
+ <OfficeRelation
290
+ v-model="values"
291
+ :field="fields.submissionStaffs"
292
+ :query="Query.define(submissionStaffOptions)"
293
+ :is-disabled="
294
+ values.status === 'raised' ||
295
+ values.status === 'processed' ||
296
+ values.status === 'delay' ||
297
+ values.status === 'approved' ||
298
+ values.status === 'monitored' ||
299
+ values.status === 'discontinued' ||
300
+ values.status === 'resolved'
301
+ "
302
+ />
303
+ </NeonFields>
304
+ </div>
305
+ <div class="ml-2 flex items-end pb-1">
306
+ <NeonCopy :size="'sm'" :value="copy.staff" />
307
+ </div>
323
308
  </div>
324
- <div class="ml-2 flex items-end pb-1">
325
- <NeonCopy :size="'sm'" :value="copy.decision" />
309
+
310
+ <div class="flex items-right">
311
+ <div class="flex-grow">
312
+ <NeonFields class="flex-1">
313
+ <OfficeRelation
314
+ v-model="values"
315
+ :field="fields.raiseStaffs"
316
+ :query="Query.define(roleRaiseStaffOptions)"
317
+ :is-disabled="
318
+ values.status === 'raised' ||
319
+ values.status === 'processed' ||
320
+ values.status === 'delay' ||
321
+ values.status === 'approved' ||
322
+ values.status === 'monitored' ||
323
+ values.status === 'discontinued' ||
324
+ values.status === 'resolved'
325
+ "
326
+ />
327
+ </NeonFields>
328
+ </div>
329
+ <div class="ml-2 flex items-end pb-1">
330
+ <NeonCopy :size="'sm'" :value="copy.raise" />
331
+ </div>
326
332
  </div>
327
- </div>
328
-
329
- <div class="flex items-right">
330
- <div class="flex-grow">
331
- <NeonFields class="flex-1">
332
- <OfficeRelation
333
- v-model="values"
334
- :field="fields.followUpStaffs"
335
- />
336
- </NeonFields>
333
+
334
+ <div class="flex items-right">
335
+ <div class="flex-grow">
336
+ <NeonFields class="flex-1">
337
+ <OfficeRelation
338
+ v-model="values"
339
+ :field="fields.decideStaffs"
340
+ :query="Query.define(roleDecideStaffOptions)"
341
+ :is-disabled="
342
+ values.status === 'raised' ||
343
+ values.status === 'processed' ||
344
+ values.status === 'delay' ||
345
+ values.status === 'approved' ||
346
+ values.status === 'monitored' ||
347
+ values.status === 'discontinued' ||
348
+ values.status === 'resolved'
349
+ "
350
+ />
351
+ </NeonFields>
352
+ </div>
353
+ <div class="ml-2 flex items-end pb-1">
354
+ <NeonCopy :size="'sm'" :value="copy.decision" />
355
+ </div>
337
356
  </div>
338
- <div class="ml-2 flex items-end pb-1">
339
- <NeonCopy :size="'sm'" :value="copy.followUp" />
357
+
358
+ <div class="flex items-right">
359
+ <div class="flex-grow">
360
+ <NeonFields class="flex-1">
361
+ <OfficeRelation
362
+ v-model="values"
363
+ :field="fields.followUpStaffs"
364
+ />
365
+ </NeonFields>
366
+ </div>
367
+ <div class="ml-2 flex items-end pb-1">
368
+ <NeonCopy :size="'sm'" :value="copy.followUp" />
369
+ </div>
340
370
  </div>
341
- </div>
342
371
 
343
- <!-- <NeonField
372
+ <!-- <NeonField
344
373
  v-model="values.specifications"
345
374
  v-bind="fields.specifications"
346
375
  :is-disabled="
@@ -354,31 +383,68 @@ const copy = ref({
354
383
  "
355
384
  /> -->
356
385
 
357
- <NeonField
358
- v-model="values.preparedAt"
359
- v-bind="fields.preparedAt"
360
- is-disabled
361
- />
362
-
363
- <NeonField
364
- v-model="values.raisedAt"
365
- v-bind="fields.raisedAt"
366
- is-disabled
367
- />
368
-
369
- <NeonField
370
- v-model="values.processedAt"
371
- v-bind="fields.processedAt"
372
- is-disabled
373
- />
374
- </NeonForm>
375
- </OfficeTab>
376
- </OfficeTabs>
386
+ <NeonField
387
+ v-model="values.preparedAt"
388
+ v-bind="fields.preparedAt"
389
+ is-disabled
390
+ />
391
+
392
+ <NeonField
393
+ v-model="values.raisedAt"
394
+ v-bind="fields.raisedAt"
395
+ is-disabled
396
+ />
397
+
398
+ <NeonField
399
+ v-model="values.processedAt"
400
+ v-bind="fields.processedAt"
401
+ is-disabled
402
+ />
403
+ </NeonForm>
404
+ </OfficeTab>
405
+ </OfficeTabs>
406
+ </div>
377
407
  </NeonSingle>
378
408
  </template>
379
409
 
380
410
  <style scoped>
381
411
  .neu-submission-single {
382
- @apply block;
412
+ @apply block h-full;
413
+ }
414
+
415
+ .single-wrapper {
416
+ @apply flex flex-col h-full min-h-0;
417
+ }
418
+
419
+ .submission-header {
420
+ @apply flex items-center flex-wrap gap-1 px-4 py-2 border-b shrink-0;
421
+ @apply text-sm;
422
+ }
423
+
424
+ .single-wrapper :deep(> .office-tabs),
425
+ .single-wrapper :deep(> .neon-tabs) {
426
+ @apply flex-1 min-h-0;
427
+ }
428
+
429
+ .header-segment {
430
+ @apply text-fg-subdued;
431
+ }
432
+
433
+ .header-brand {
434
+ @apply font-medium text-dark;
435
+ }
436
+
437
+ .header-department {
438
+ @apply font-medium text-dark;
439
+ }
440
+
441
+ .header-title {
442
+ @apply font-bold text-dark;
443
+ }
444
+
445
+ .header-sep {
446
+ @apply text-fg-subdued;
447
+
448
+ --neon-icon-size: 12px;
383
449
  }
384
450
  </style>
@@ -119,6 +119,10 @@
119
119
  v-model="values"
120
120
  :field="fields.submissionStaffs"
121
121
  :query="Query.define(submissionStaffOptions)"
122
+ :fragment="{
123
+ nik: 1,
124
+ name: 1,
125
+ }"
122
126
  :is-disabled="
123
127
  values.statusStaff === 'raised' ||
124
128
  values.statusStaff === 'processed' ||
@@ -145,6 +149,10 @@
145
149
  v-model="values"
146
150
  :field="fields.raiseStaffs"
147
151
  :query="Query.define(roleStaffOptions)"
152
+ :fragment="{
153
+ nik: 1,
154
+ name: 1,
155
+ }"
148
156
  :is-disabled="
149
157
  values.statusStaff === 'raised' ||
150
158
  values.statusStaff === 'processed' ||
@@ -168,6 +176,10 @@
168
176
  v-model="values"
169
177
  :field="fields.decideStaffs"
170
178
  :query="Query.define(roleDecideStaffOptions)"
179
+ :fragment="{
180
+ nik: 1,
181
+ name: 1,
182
+ }"
171
183
  :is-disabled="
172
184
  values.statusStaff === 'raised' ||
173
185
  values.statusStaff === 'processed' ||