salix/modules/ticket/front/dms/create/index.js

109 lines
2.9 KiB
JavaScript
Raw Normal View History

import ngModule from '../../module';
2020-03-18 07:35:59 +00:00
import Section from 'salix/components/section';
2020-03-18 07:35:59 +00:00
class Controller extends Section {
constructor($element, $) {
super($element, $);
this.dms = {
files: [],
2019-07-16 11:37:25 +00:00
hasFile: false,
2019-07-16 12:12:58 +00:00
hasFileAttached: false
};
}
get ticket() {
return this._ticket;
}
set ticket(value) {
this._ticket = value;
if (value) {
this.setDefaultParams();
this.getAllowedContentTypes();
}
}
getAllowedContentTypes() {
2020-12-18 16:23:04 +00:00
this.$http.get('DmsContainers/allowedContentTypes').then(res => {
const contentTypes = res.data.join(', ');
this.allowedContentTypes = contentTypes;
});
}
get contentTypesInfo() {
return this.$t('ContentTypesInfo', {
allowedContentTypes: this.allowedContentTypes
});
}
setDefaultParams() {
const params = {filter: {
where: {code: 'ticket'}
}};
this.$http.get('DmsTypes/findOne', {params}).then(res => {
const dmsTypeId = res.data && res.data.id;
2019-10-09 22:47:29 +00:00
const warehouseId = this.vnConfig.warehouseFk;
const defaultParams = {
reference: this.ticket.id,
2019-07-17 13:01:38 +00:00
warehouseId: warehouseId,
2020-02-03 13:36:04 +00:00
companyId: this.ticket.companyFk,
dmsTypeId: dmsTypeId,
description: this.$t('FileDescription', {
ticketId: this.ticket.id,
clientId: this.ticket.client.id,
clientName: this.ticket.client.name
}).toUpperCase()
};
this.dms = Object.assign(this.dms, defaultParams);
});
}
onSubmit() {
const query = `tickets/${this.ticket.id}/uploadFile`;
const options = {
method: 'POST',
url: query,
params: this.dms,
headers: {
'Content-Type': undefined
},
transformRequest: files => {
const formData = new FormData();
for (let i = 0; i < files.length; i++)
formData.append(files[i].name, files[i]);
return formData;
},
data: this.dms.files
};
this.$http(options).then(res => {
if (res) {
this.vnApp.showSuccess(this.$t('Data saved!'));
this.$.watcher.updateOriginalData();
this.$state.go('ticket.card.dms.index');
}
});
}
onFileChange(files) {
2019-07-16 12:12:58 +00:00
let hasFileAttached = false;
2019-07-16 11:37:25 +00:00
if (files.length > 0)
2019-07-16 12:12:58 +00:00
hasFileAttached = true;
2019-07-16 11:37:25 +00:00
this.$.$applyAsync(() => {
2019-07-16 12:12:58 +00:00
this.dms.hasFileAttached = hasFileAttached;
2019-07-16 11:37:25 +00:00
});
}
}
ngModule.vnComponent('vnTicketDmsCreate', {
template: require('./index.html'),
controller: Controller,
bindings: {
ticket: '<'
}
});