Files
raven-client/ayanova/src/components/work-order-header.vue
2021-04-30 21:28:13 +00:00

339 lines
8.9 KiB
Vue

<template>
<div>
<v-row>
<v-col
cols="12"
sm="6"
lg="4"
xl="3"
v-if="value.serial != 0 && canEditSerial"
>
<v-text-field
v-model="value.serial"
:readonly="formState.readOnly"
:label="$ay.t('WorkOrderSerialNumber')"
ref="serial"
data-cy="serial"
:rules="[
form().integerValid(this, 'serial'),
form().required(this, 'serial')
]"
:error-messages="form().serverErrors(this, 'serial')"
@input="fieldValueChanged('serial')"
></v-text-field>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<gz-pick-list
:aya-type="$ay.ayt().Customer"
:show-edit-icon="true"
v-model="value.customerId"
:readonly="formState.readOnly"
:label="$ay.t('Customer')"
:can-clear="false"
ref="customerId"
data-cy="customerId"
:rules="[form().required(this, 'customerId')]"
:error-messages="form().serverErrors(this, 'customerId')"
@input="fieldValueChanged('customerId')"
></gz-pick-list>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<GzWoState
v-if="pvm.subRights.states.visible"
v-model="value"
:form-key="formCustomTemplateKey"
:readonly="formState.readOnly"
:pvm="pvm"
data-cy="woState"
:all-states="pvm.selectLists.wostatus"
:allowed-states="pvm.selectLists.allowedwostatus"
/>
</v-col>
<v-col cols="12" sm="6" lg="4" xl="3">
<GzWoAddress
v-model="value"
:form-key="formCustomTemplateKey"
:readonly="formState.readOnly"
:pvm="pvm"
data-cy="woAddress"
/>
</v-col>
<v-col v-if="form().showMe(this, 'Notes')" cols="12">
<v-textarea
v-model="value.notes"
:readonly="formState.readOnly"
:label="$ay.t('WorkOrderSummary')"
:error-messages="form().serverErrors(this, 'notes')"
ref="notes"
data-cy="notes"
@input="fieldValueChanged('notes')"
auto-grow
></v-textarea>
</v-col>
</v-row>
</div>
</template>
<script>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* XXXeslint-disable */
////////////////////////////////////////////////////////////////////////////////////////////////////////////
import GzWoState from "./work-order-state.vue";
import GzWoAddress from "./work-order-address.vue";
export default {
components: {
GzWoState,
GzWoAddress
},
data() {
return {
canEditSerial: window.$gz.role.hasRole([
window.$gz.role.AUTHORIZATION_ROLES.BizAdminFull
])
};
},
props: {
value: {
default: null,
type: Object
},
pvm: {
default: null,
type: Object
}
},
methods: {
form() {
return window.$gz.form;
},
async fieldValueChanged(ref) {
if (!this.formState.loading && !this.formState.readonly) {
//flag this record dirty so it gets picked up by save
this.value.isDirty = true;
window.$gz.form.fieldValueChanged(this.pvm, ref);
if (ref == "customerId") {
this.value.alertViz = null;
const custId = this.value.customerId;
if (custId != null) {
//------ Alert notes
let res = await window.$gz.api.get(`customer/alert/${custId}`);
if (res.data) {
this.value.alertViz = res.data;
}
//------ Addresses
res = await window.$gz.api.get(`customer/address/${custId}`);
if (res.data) {
console.log("woheaderfldvalchng-address:", res.data);
}
}
}
}
}
},
computed: {
formState: function() {
return this.pvm.formState;
},
formCustomTemplateKey: function() {
return this.pvm.formCustomTemplateKey;
}
}
};
/*
Example workorder
{
id: 10,
concurrency: 7728489,
serial: 10,
notes: "Quae officia placeat aliquid ducimus consequatur quia.",
wiki: null,
customFields: null,
tags: ["green", "zone6"],
customerId: 12,
projectId: null,
internalReferenceNumber: "irf-3339",
customerReferenceNumber: "crf-1889",
customerContactName: "contact name here",
fromQuoteId: null,
fromPMId: null,
fromCSRId: null,
serviceDate: "2021-05-29T21:25:31.421011Z",
completeByDate: "2021-06-03T21:25:31.421011Z",
invoiceNumber: null,
customerSignature: null,
customerSignatureName: null,
customerSignatureCaptured: "0001-01-01T00:00:00Z",
postAddress: null,
postCity: null,
postRegion: null,
postCountry: null,
postCode: null,
address: null,
city: null,
region: null,
country: null,
latitude: null,
longitude: null,
items: [
{
id: 21,
concurrency: 7728489,
notes: "itemnotes",
wiki: null,
customFields: null,
tags: [],
workOrderId: 10,
techNotes: "technotes",
workorderItemStatusId: null,
workorderItemPriorityId: null,
requestDate: "2021-05-29T21:25:31.421011Z",
warrantyService: false,
isDirty: false,
expenses: [],
labors: [],
loans: [],
parts: [],
partRequests: [],
scheduledUsers: [
{
id: 41,
concurrency: 7728489,
userId: 15,
estimatedQuantity: 1.0,
startDate: null,
stopDate: null,
serviceRateId: null,
isDirty: false,
workOrderItemId: 21
},
{
id: 42,
concurrency: 7728489,
userId: 22,
estimatedQuantity: 2.0,
startDate: null,
stopDate: null,
serviceRateId: null,
isDirty: false,
workOrderItemId: 21
}
],
tasks: [],
travels: [],
units: [],
outsideServices: []
},
{
id: 22,
concurrency: 7728489,
notes: "itemnotes",
wiki: null,
customFields: null,
tags: [],
workOrderId: 10,
techNotes: "technotes",
workorderItemStatusId: null,
workorderItemPriorityId: null,
requestDate: "2021-05-29T21:25:31.421011Z",
warrantyService: false,
isDirty: false,
expenses: [],
labors: [],
loans: [],
parts: [],
partRequests: [],
scheduledUsers: [
{
id: 43,
concurrency: 7728489,
userId: 24,
estimatedQuantity: 1.0,
startDate: null,
stopDate: null,
serviceRateId: null,
isDirty: false,
workOrderItemId: 22
},
{
id: 44,
concurrency: 7728489,
userId: 40,
estimatedQuantity: 2.0,
startDate: null,
stopDate: null,
serviceRateId: null,
isDirty: false,
workOrderItemId: 22
}
],
tasks: [],
travels: [],
units: [],
outsideServices: []
}
],
states: [
{
id: 37,
concurrency: 7728489,
workOrderId: 10,
workOrderStatusId: 2,
created: "2021-05-29T21:30:31.421011Z",
userId: 37,
isDirty: false,
workOrderStatus: null
},
{
id: 38,
concurrency: 7728489,
workOrderId: 10,
workOrderStatusId: 3,
created: "2021-05-29T22:25:31.421011Z",
userId: 10,
isDirty: false,
workOrderStatus: null
},
{
id: 39,
concurrency: 7728489,
workOrderId: 10,
workOrderStatusId: 1,
created: "2021-05-29T22:30:31.421011Z",
userId: 31,
isDirty: false,
workOrderStatus: null
},
{
id: 40,
concurrency: 7728489,
workOrderId: 10,
workOrderStatusId: 3,
created: "2021-05-29T23:25:31.421011Z",
userId: 2,
isDirty: false,
workOrderStatus: null
},
{
id: 41,
concurrency: 7728489,
workOrderId: 10,
workOrderStatusId: 9,
created: "2021-04-06T00:10:44.636Z",
userId: 1,
isDirty: false,
workOrderStatus: null
}
],
isDirty: false,
isLockedAtServer: false
};
*/
</script>