salix/modules/claim/front/photos/index.js

110 lines
3.1 KiB
JavaScript
Raw Normal View History

2020-01-10 10:29:11 +00:00
import ngModule from '../module';
2020-03-16 10:58:14 +00:00
import Section from 'salix/components/section';
2019-07-30 06:51:38 +00:00
import './style.scss';
2020-03-16 10:58:14 +00:00
class Controller extends Section {
2020-06-12 12:28:29 +00:00
constructor($element, $, vnFile) {
super($element, $);
this.vnFile = vnFile;
2022-04-07 12:12:56 +00:00
this.filter = {
include: [
{
relation: 'dms'
}
]
};
2020-06-12 12:28:29 +00:00
}
deleteDms(index) {
const dmsFk = this.photos[index].dmsFk;
return this.$http.post(`ClaimDms/${dmsFk}/removeFile`)
.then(() => {
this.$.model.remove(index);
2022-04-08 07:34:46 +00:00
this.vnApp.showSuccess(this.$t('File deleted'));
2019-07-30 06:51:38 +00:00
});
}
2019-10-16 06:56:13 +00:00
onDrop($event) {
const files = $event.dataTransfer.files;
this.setDefaultParams().then(() => {
this.dms.files = files;
this.create();
});
}
setDefaultParams() {
const filter = {
where: {code: 'claim'}
};
return this.$http.get('DmsTypes/findOne', {filter}).then(res => {
const dmsTypeId = res.data && res.data.id;
2019-10-09 22:47:29 +00:00
const companyId = this.vnConfig.companyFk;
const warehouseId = this.vnConfig.warehouseFk;
this.dms = {
hasFile: false,
hasFileAttached: false,
reference: this.claim.id,
warehouseId: warehouseId,
companyId: companyId,
dmsTypeId: dmsTypeId,
description: this.$t('FileDescription', {
claimId: this.claim.id,
clientId: this.claim.client.id,
clientName: this.claim.client.name
}).toUpperCase()
};
});
}
2020-01-08 16:03:08 +00:00
openUploadDialog() {
const element = document.createElement('input');
element.setAttribute('type', 'file');
element.setAttribute('multiple', true);
element.click();
element.addEventListener('change', () =>
this.setDefaultParams().then(() => {
this.dms.files = element.files;
this.create();
})
);
}
create() {
const query = `claims/${this.claim.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(() => {
2022-04-08 07:34:46 +00:00
this.vnApp.showSuccess(this.$t('File uploaded!'));
this.$.model.refresh();
});
}
2020-06-12 12:28:29 +00:00
getImagePath(dmsId) {
2022-04-08 07:34:46 +00:00
return this.vnFile.getPath(`/api/Claims/${dmsId}/downloadFile`);
2020-06-12 12:28:29 +00:00
}
2019-07-30 06:51:38 +00:00
}
2020-06-12 12:28:29 +00:00
Controller.$inject = ['$element', '$scope', 'vnFile'];
ngModule.vnComponent('vnClaimPhotos', {
2019-07-30 06:51:38 +00:00
template: require('./index.html'),
controller: Controller,
bindings: {
claim: '<'
}
2019-07-30 06:51:38 +00:00
});